Event Tickets - Version 4.9

Version Description

Download this release

Release Info

Developer bordoni
Plugin Icon 128x128 Event Tickets
Version 4.9
Comparing to
See all releases

Code changes from version 4.8.4.1 to 4.9

Files changed (345) hide show
  1. common/lang/tribe-common-af.po +45 -7
  2. common/lang/tribe-common-ar.po +45 -7
  3. common/lang/tribe-common-bg_BG.po +45 -7
  4. common/lang/tribe-common-ca.po +45 -7
  5. common/lang/tribe-common-cs_CZ.po +45 -7
  6. common/lang/tribe-common-da_DK.po +45 -7
  7. common/lang/tribe-common-de_DE.mo +0 -0
  8. common/lang/tribe-common-de_DE.po +47 -9
  9. common/lang/tribe-common-el.po +45 -7
  10. common/lang/tribe-common-en_GB.po +45 -7
  11. common/lang/tribe-common-es_ES.mo +0 -0
  12. common/lang/tribe-common-es_ES.po +53 -15
  13. common/lang/tribe-common-et.po +45 -7
  14. common/lang/tribe-common-fi.po +45 -7
  15. common/lang/tribe-common-fr_CA.mo +0 -0
  16. common/lang/tribe-common-fr_CA.po +403 -365
  17. common/lang/tribe-common-fr_FR.mo +0 -0
  18. common/lang/tribe-common-fr_FR.po +51 -13
  19. common/lang/tribe-common-hu_HU.mo +0 -0
  20. common/lang/tribe-common-hu_HU.po +52 -14
  21. common/lang/tribe-common-id_ID.po +45 -7
  22. common/lang/tribe-common-is_IS.po +45 -7
  23. common/lang/tribe-common-it_IT.mo +0 -0
  24. common/lang/tribe-common-it_IT.po +52 -14
  25. common/lang/tribe-common-ja.mo +0 -0
  26. common/lang/tribe-common-ja.po +53 -15
  27. common/lang/tribe-common-lt_LT.po +45 -7
  28. common/lang/tribe-common-lv.po +45 -7
  29. common/lang/tribe-common-nb_NO.po +45 -7
  30. common/lang/tribe-common-nl_NL.po +45 -7
  31. common/lang/tribe-common-pl_PL.po +45 -7
  32. common/lang/tribe-common-pt_BR.mo +0 -0
  33. common/lang/tribe-common-pt_BR.po +47 -9
  34. common/lang/tribe-common-pt_PT.po +45 -7
  35. common/lang/tribe-common-ro_RO.po +45 -7
  36. common/lang/tribe-common-ru_RU.po +45 -7
  37. common/lang/tribe-common-sk_SK.po +45 -7
  38. common/lang/tribe-common-sl_SI.po +45 -7
  39. common/lang/tribe-common-sr_RS.po +45 -7
  40. common/lang/tribe-common-sv_SE.po +45 -7
  41. common/lang/tribe-common-tr_TR.po +45 -7
  42. common/lang/tribe-common-zh_CN.po +45 -7
  43. common/lang/tribe-common-zh_TW.po +45 -7
  44. common/lang/tribe-common.pot +48 -10
  45. common/readme.txt +7 -0
  46. common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php +1 -1
  47. common/src/Tribe/Ajax/Dropdown.php +1 -1
  48. common/src/Tribe/Ajax/Operations.php +1 -1
  49. common/src/Tribe/Asset/Data.php +1 -1
  50. common/src/Tribe/Cache.php +18 -2
  51. common/src/Tribe/Cache_Listener.php +8 -4
  52. common/src/Tribe/Data.php +1 -1
  53. common/src/Tribe/Documentation/Swagger/Builder_Interface.php +1 -1
  54. common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php +1 -1
  55. common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php +1 -1
  56. common/src/Tribe/Documentation/Swagger/Provider_Interface.php +1 -1
  57. common/src/Tribe/Duplicate/Post.php +1 -1
  58. common/src/Tribe/Duplicate/Strategy/Base.php +1 -1
  59. common/src/Tribe/Duplicate/Strategy/Interface.php +1 -1
  60. common/src/Tribe/Duplicate/Strategy/Like.php +1 -1
  61. common/src/Tribe/Duplicate/Strategy_Factory.php +1 -1
  62. common/src/Tribe/Editor.php +188 -0
  63. common/src/Tribe/Editor/Assets.php +210 -0
  64. common/src/Tribe/Editor/Blocks/Abstract.php +207 -0
  65. common/src/Tribe/Editor/Blocks/Interface.php +70 -0
  66. common/src/Tribe/Editor/Configuration.php +105 -0
  67. common/src/Tribe/Editor/Configuration_Interface.php +17 -0
  68. common/src/Tribe/Editor/Meta.php +217 -0
  69. common/src/Tribe/Editor/Meta_Interface.php +15 -0
  70. common/src/Tribe/Editor/Provider.php +49 -0
  71. common/src/Tribe/Editor/Utils.php +65 -0
  72. common/src/Tribe/Exception.php +1 -1
  73. common/src/Tribe/Field_Conditional.php +1 -1
  74. common/src/Tribe/Languages/Map_Interface.php +1 -1
  75. common/src/Tribe/Languages/Recaptcha_Map.php +1 -1
  76. common/src/Tribe/Log.php +1 -1
  77. common/src/Tribe/Log/Admin.php +1 -1
  78. common/src/Tribe/Log/Logger.php +1 -1
  79. common/src/Tribe/Log/Null_Logger.php +1 -1
  80. common/src/Tribe/Main.php +3 -1
  81. common/src/Tribe/PUE/Notices.php +57 -0
  82. common/src/Tribe/Post_History.php +1 -1
  83. common/src/Tribe/REST/Endpoints/CREATE_Endpoint_Interface.php +1 -1
  84. common/src/Tribe/REST/Endpoints/READ_Endpoint_Interface.php +1 -1
  85. common/src/Tribe/REST/Endpoints/UPDATE_Endpoint_Interface.php +1 -1
  86. common/src/Tribe/REST/Exceptions/Exception.php +1 -1
  87. common/src/Tribe/REST/Headers/Base_Header.php +1 -1
  88. common/src/Tribe/REST/Headers/Base_Interface.php +1 -1
  89. common/src/Tribe/REST/Headers/Disabled.php +1 -1
  90. common/src/Tribe/REST/Headers/Headers_Interface.php +1 -1
  91. common/src/Tribe/REST/Headers/Supported.php +1 -1
  92. common/src/Tribe/REST/Headers/Unsupported.php +1 -1
  93. common/src/Tribe/REST/Main.php +1 -1
  94. common/src/Tribe/REST/Messages_Interface.php +1 -1
  95. common/src/Tribe/REST/Post_Repository.php +1 -1
  96. common/src/Tribe/REST/Post_Repository_Interface.php +1 -1
  97. common/src/Tribe/REST/System.php +1 -1
  98. common/src/Tribe/Repository/Decorator.php +1 -1
  99. common/src/Tribe/Repository/Formatter_Interface.php +1 -1
  100. common/src/Tribe/Repository/Implementation_Error.php +1 -1
  101. common/src/Tribe/Repository/Update_Interface.php +1 -1
  102. common/src/Tribe/Rewrite.php +1 -1
  103. common/src/Tribe/Support/Obfuscator.php +1 -1
  104. common/src/Tribe/Support/Template_Checker.php +1 -1
  105. common/src/Tribe/Support/Template_Checker_Report.php +1 -1
  106. common/src/Tribe/Tabbed_View.php +1 -1
  107. common/src/Tribe/Template.php +1 -1
  108. common/src/Tribe/Terms.php +1 -1
  109. common/src/Tribe/Utils/Callback.php +1 -1
  110. common/src/Tribe/Utils/Coordinates_Provider.php +1 -1
  111. common/src/Tribe/Utils/JSON.php +1 -1
  112. common/src/Tribe/Validate.php +1 -1
  113. common/src/Tribe/Validator/Base.php +1 -1
  114. common/src/functions/utils.php +30 -0
  115. common/src/modules/components/form/index.js +1 -0
  116. common/src/modules/components/form/select/component.js +116 -0
  117. common/src/modules/components/form/select/index.js +1 -0
  118. common/src/modules/components/form/select/style.pcss +56 -0
  119. common/src/modules/components/index.js +5 -0
  120. common/src/modules/components/plugin-block-hooks/__tests__/__snapshots__/plugin-block-hooks.spec.js.snap +131 -0
  121. common/src/modules/components/plugin-block-hooks/__tests__/plugin-block-hooks.spec.js +92 -0
  122. common/src/modules/components/plugin-block-hooks/component.js +138 -0
  123. common/src/modules/components/plugin-block-hooks/container.js +21 -0
  124. common/src/modules/components/plugin-block-hooks/index.js +1 -0
  125. common/src/modules/components/plugin-block-hooks/style.pcss +37 -0
  126. common/src/modules/components/prevent-block-close/__tests__/component.spec.js +15 -0
  127. common/src/modules/components/prevent-block-close/component.js +38 -0
  128. common/src/modules/components/prevent-block-close/index.js +1 -0
  129. common/src/modules/data/__tests__/utils.test.js +10 -0
  130. common/src/modules/data/editor/post-types.js +3 -0
  131. common/src/modules/data/forms/__tests__/__snapshots__/actions.test.js.snap +147 -0
  132. common/src/modules/data/forms/__tests__/actions.test.js +96 -0
  133. common/src/modules/data/forms/__tests__/reducer.test.js +88 -0
  134. common/src/modules/data/forms/__tests__/selectors.test.js +89 -0
  135. common/src/modules/data/forms/__tests__/types.js +19 -0
  136. common/src/modules/data/forms/actions.js +153 -0
  137. common/src/modules/data/forms/index.js +12 -0
  138. common/src/modules/data/forms/reducer.js +33 -0
  139. common/src/modules/data/forms/reducers/__tests__/__snapshots__/form.test.js.snap +84 -0
  140. common/src/modules/data/forms/reducers/__tests__/form.test.js +49 -0
  141. common/src/modules/data/forms/reducers/__tests__/volatile.test.js +23 -0
  142. common/src/modules/data/forms/reducers/form.js +58 -0
  143. common/src/modules/data/forms/reducers/index.js +2 -0
  144. common/src/modules/data/forms/reducers/volatile.js +15 -0
  145. common/src/modules/data/forms/selectors.js +39 -0
  146. common/src/modules/data/forms/types.js +15 -0
  147. common/src/modules/data/index.js +9 -0
  148. common/src/modules/data/plugins/__tests__/__snapshots__/actions.test.js.snap +19 -0
  149. common/src/modules/data/plugins/__tests__/actions.test.js +14 -0
  150. common/src/modules/data/plugins/__tests__/reducer.test.js +25 -0
  151. common/src/modules/data/plugins/__tests__/selectors.test.js +23 -0
  152. common/src/modules/data/plugins/__tests__/types.test.js +12 -0
  153. common/src/modules/data/plugins/actions.js +18 -0
  154. common/src/modules/data/plugins/constants.js +4 -0
  155. common/src/modules/data/plugins/index.js +12 -0
  156. common/src/modules/data/plugins/proptypes.js +15 -0
  157. common/src/modules/data/plugins/reducer.js +20 -0
  158. common/src/modules/data/plugins/selectors.js +9 -0
  159. common/src/modules/data/plugins/types.js +7 -0
  160. common/src/modules/data/reducers.js +15 -0
  161. common/src/modules/data/utils.js +1 -0
  162. common/src/modules/elements/accordion/__tests__/__snapshots__/element.test.js.snap +71 -0
  163. common/src/modules/elements/accordion/__tests__/element.test.js +45 -0
  164. common/src/modules/elements/accordion/element.js +58 -0
  165. common/src/modules/elements/accordion/row/__tests__/__snapshots__/template.test.js.snap +31 -0
  166. common/src/modules/elements/accordion/row/__tests__/template.test.js +56 -0
  167. common/src/modules/elements/accordion/row/template.js +129 -0
  168. common/src/modules/elements/accordion/style.pcss +8 -0
  169. common/src/modules/elements/block-icon/index.js +16 -0
  170. common/src/modules/elements/block-icon/style.pcss +24 -0
  171. common/src/modules/elements/button/__tests__/__snapshots__/element.test.js.snap +62 -0
  172. common/src/modules/elements/button/__tests__/element.test.js +60 -0
  173. common/src/modules/elements/button/element.js +56 -0
  174. common/src/modules/elements/button/style.pcss +46 -0
  175. common/src/modules/elements/checkbox-input/__tests__/__snapshots__/element.test.js.snap +47 -0
  176. common/src/modules/elements/checkbox-input/__tests__/element.test.js +39 -0
  177. common/src/modules/elements/checkbox-input/element.js +35 -0
  178. common/src/modules/elements/checkbox-input/style.pcss +25 -0
  179. common/src/modules/elements/checkbox/__tests__/__snapshots__/element.test.js.snap +168 -0
  180. common/src/modules/elements/checkbox/__tests__/element.test.js +70 -0
  181. common/src/modules/elements/checkbox/element.js +61 -0
  182. common/src/modules/elements/counter/__tests__/__snapshots__/element.test.js.snap +57 -0
  183. common/src/modules/elements/counter/__tests__/element.test.js +32 -0
  184. common/src/modules/elements/counter/element.js +37 -0
  185. common/src/modules/elements/counter/style.pcss +22 -0
  186. common/src/modules/elements/creatable-select/__tests__/__snapshots__/element.test.js.snap +240 -0
  187. common/src/modules/elements/creatable-select/__tests__/element.test.js +31 -0
  188. common/src/modules/elements/creatable-select/element.js +50 -0
  189. common/src/modules/elements/creatable-select/style.pcss +75 -0
  190. common/src/modules/elements/day-picker-input/element.js +34 -0
  191. common/src/modules/elements/day-picker-input/style.pcss +109 -0
  192. common/src/modules/elements/heading/__tests__/__snapshots__/element.test.js.snap +49 -0
  193. common/src/modules/elements/heading/__tests__/element.test.js +47 -0
  194. common/src/modules/elements/heading/element.js +32 -0
  195. common/src/modules/elements/heading/style.pcss +16 -0
  196. common/src/modules/elements/image-upload/__tests__/__snapshots__/element.test.js.snap +191 -0
  197. common/src/modules/elements/image-upload/__tests__/element.test.js +168 -0
  198. common/src/modules/elements/image-upload/element.js +114 -0
  199. common/src/modules/elements/image-upload/style.pcss +109 -0
  200. common/src/modules/elements/image/__tests__/__snapshots__/element.test.js.snap +27 -0
  201. common/src/modules/elements/image/__tests__/element.test.js +38 -0
  202. common/src/modules/elements/image/element.js +28 -0
  203. common/src/modules/elements/index.js +36 -0
  204. common/src/modules/elements/input/__tests__/__snapshots__/element.test.js.snap +23 -0
  205. common/src/modules/elements/input/__tests__/element.test.js +28 -0
  206. common/src/modules/elements/input/element.js +30 -0
  207. common/src/modules/elements/input/style.pcss +19 -0
  208. common/src/modules/elements/label-with-link/__tests__/__snapshots__/element.test.js.snap +51 -0
  209. common/src/modules/elements/label-with-link/__tests__/element.test.js +32 -0
  210. common/src/modules/elements/label-with-link/element.js +66 -0
  211. common/src/modules/elements/label-with-link/style.pcss +54 -0
  212. common/src/modules/elements/label-with-modal/__tests__/__snapshots__/element.test.js.snap +60 -0
  213. common/src/modules/elements/label-with-modal/__tests__/element.test.js +26 -0
  214. common/src/modules/elements/label-with-modal/element.js +68 -0
  215. common/src/modules/elements/label-with-modal/style.pcss +53 -0
  216. common/src/modules/elements/labeled-item/__tests__/__snapshots__/element.test.js.snap +50 -0
  217. common/src/modules/elements/labeled-item/__tests__/element.test.js +39 -0
  218. common/src/modules/elements/labeled-item/element.js +52 -0
  219. common/src/modules/elements/link/__tests__/__snapshots__/element.test.js.snap +40 -0
  220. common/src/modules/elements/link/__tests__/element.test.js +39 -0
  221. common/src/modules/elements/link/element.js +44 -0
  222. common/src/modules/elements/modal-button/__tests__/__snapshots__/element.test.js.snap +51 -0
  223. common/src/modules/elements/modal-button/__tests__/element.test.js +46 -0
  224. common/src/modules/elements/modal-button/element.js +100 -0
  225. common/src/modules/elements/number-input/__tests__/__snapshots__/element.test.js.snap +55 -0
  226. common/src/modules/elements/number-input/__tests__/element.test.js +47 -0
  227. common/src/modules/elements/number-input/element.js +40 -0
  228. common/src/modules/elements/paragraph/__tests__/__snapshots__/element.test.js.snap +17 -0
  229. common/src/modules/elements/paragraph/__tests__/element.test.js +19 -0
  230. common/src/modules/elements/paragraph/element.js +41 -0
  231. common/src/modules/elements/paragraph/style.pcss +24 -0
  232. common/src/modules/elements/placeholder/__tests__/__snapshots__/element.test.js.snap +17 -0
  233. common/src/modules/elements/placeholder/__tests__/element.test.js +18 -0
  234. common/src/modules/elements/placeholder/element.js +23 -0
  235. common/src/modules/elements/placeholder/style.pcss +12 -0
  236. common/src/modules/elements/radio-input/element.js +29 -0
  237. common/src/modules/elements/radio/element.js +50 -0
  238. common/src/modules/elements/select/__tests__/__snapshots__/element.test.js.snap +240 -0
  239. common/src/modules/elements/select/__tests__/element.test.js +31 -0
  240. common/src/modules/elements/select/element.js +41 -0
  241. common/src/modules/elements/select/style.pcss +77 -0
  242. common/src/modules/elements/style.pcss +3 -0
  243. common/src/modules/elements/textarea/element.js +20 -0
  244. common/src/modules/elements/time-picker/element.js +201 -0
  245. common/src/modules/elements/time-picker/style.pcss +103 -0
  246. common/src/modules/elements/tooltip/__tests__/__snapshots__/element.test.js.snap +22 -0
  247. common/src/modules/elements/tooltip/__tests__/element.test.js +33 -0
  248. common/src/modules/elements/tooltip/element.js +56 -0
  249. common/src/modules/elements/url-input/element.js +27 -0
  250. common/src/modules/hoc/__tests__/__snapshots__/with-details.test.js.snap +30 -0
  251. common/src/modules/hoc/__tests__/__snapshots__/with-form.test.js.snap +19 -0
  252. common/src/modules/hoc/__tests__/__snapshots__/with-save-data.test.js.snap +62 -0
  253. common/src/modules/hoc/__tests__/__snapshots__/with-store.test.js.snap +18 -0
  254. common/src/modules/hoc/__tests__/with-details.test.js +65 -0
  255. common/src/modules/hoc/__tests__/with-form.test.js +89 -0
  256. common/src/modules/hoc/__tests__/with-save-data.test.js +191 -0
  257. common/src/modules/hoc/__tests__/with-selected.test.js +97 -0
  258. common/src/modules/hoc/__tests__/with-store.test.js +34 -0
  259. common/src/modules/hoc/index.js +5 -0
  260. common/src/modules/hoc/with-block-closer.js +129 -0
  261. common/src/modules/hoc/with-form.js +71 -0
  262. common/src/modules/hoc/with-save-data.js +155 -0
  263. common/src/modules/hoc/with-selected.js +64 -0
  264. common/src/modules/hoc/with-store.js +26 -0
  265. common/src/modules/icons/alert.svg +1 -0
  266. common/src/modules/icons/clipboard.svg +1 -0
  267. common/src/modules/icons/close.svg +1 -0
  268. common/src/modules/icons/cog.svg +1 -0
  269. common/src/modules/icons/index.js +9 -0
  270. common/src/modules/icons/info.svg +1 -0
  271. common/src/modules/icons/link.svg +7 -0
  272. common/src/modules/icons/pencil.svg +1 -0
  273. common/src/modules/icons/tag.svg +1 -0
  274. common/src/modules/icons/tec.svg +1 -0
  275. common/src/modules/icons/user.svg +1 -0
  276. common/src/modules/package.json +17 -0
  277. common/src/modules/store/configure-store.js +37 -0
  278. common/src/modules/store/index.js +13 -0
  279. common/src/modules/store/middlewares/index.js +3 -0
  280. common/src/modules/store/middlewares/request/__tests__/__snapshots__/actions.test.js.snap +11 -0
  281. common/src/modules/store/middlewares/request/__tests__/actions.test.js +14 -0
  282. common/src/modules/store/middlewares/request/__tests__/types.test.js +11 -0
  283. common/src/modules/store/middlewares/request/__tests__/utils.test.js +61 -0
  284. common/src/modules/store/middlewares/request/__tests__/wp-request.test.js +169 -0
  285. common/src/modules/store/middlewares/request/actions.js +9 -0
  286. common/src/modules/store/middlewares/request/index.js +9 -0
  287. common/src/modules/store/middlewares/request/types.js +6 -0
  288. common/src/modules/store/middlewares/request/utils.js +32 -0
  289. common/src/modules/store/middlewares/request/wp-request.js +76 -0
  290. common/src/modules/utils/__tests__/__snapshots__/globals.test.js.snap +93 -0
  291. common/src/modules/utils/__tests__/__snapshots__/time.test.js.snap +33 -0
  292. common/src/modules/utils/__tests__/date.test.js +189 -0
  293. common/src/modules/utils/__tests__/dom.test.js +73 -0
  294. common/src/modules/utils/__tests__/globals.test.js +84 -0
  295. common/src/modules/utils/__tests__/input.test.js +20 -0
  296. common/src/modules/utils/__tests__/moment.test.js +328 -0
  297. common/src/modules/utils/__tests__/number.test.js +36 -0
  298. common/src/modules/utils/__tests__/proptypes.test.js +145 -0
  299. common/src/modules/utils/__tests__/range.test.js +65 -0
  300. common/src/modules/utils/__tests__/slide.test.js +12 -0
  301. common/src/modules/utils/__tests__/string.test.js +135 -0
  302. common/src/modules/utils/__tests__/time.test.js +222 -0
  303. common/src/modules/utils/api.js +57 -0
  304. common/src/modules/utils/date.js +151 -0
  305. common/src/modules/utils/dom.js +50 -0
  306. common/src/modules/utils/get-hidden-height.js +28 -0
  307. common/src/modules/utils/globals.js +31 -0
  308. common/src/modules/utils/index.js +27 -0
  309. common/src/modules/utils/input.js +12 -0
  310. common/src/modules/utils/moment.js +331 -0
  311. common/src/modules/utils/number.js +22 -0
  312. common/src/modules/utils/proptypes.js +73 -0
  313. common/src/modules/utils/range.js +89 -0
  314. common/src/modules/utils/slide.js +119 -0
  315. common/src/modules/utils/string.js +109 -0
  316. common/src/modules/utils/time.js +207 -0
  317. common/src/modules/utils/timezone.js +72 -0
  318. common/src/resources/css/accessibility.css +8 -10
  319. common/src/resources/css/app-shop.css +88 -72
  320. common/src/resources/css/app/components.css +1 -1
  321. common/src/resources/css/app/components.min.css +1 -1
  322. common/src/resources/css/app/components.min.css.map +1 -1
  323. common/src/resources/css/app/elements.css +5 -4
  324. common/src/resources/css/app/elements.min.css +5 -4
  325. common/src/resources/css/app/elements.min.css.map +1 -1
  326. common/src/resources/css/bumpdown.css +6 -8
  327. common/src/resources/css/bumpdown.min.css +1 -1
  328. common/src/resources/css/buttonset.css +6 -6
  329. common/src/resources/css/datatables.css +215 -212
  330. common/src/resources/css/datatables.min.css +1 -1
  331. common/src/resources/css/datepicker.css +182 -201
  332. common/src/resources/css/datepicker.min.css +1 -1
  333. common/src/resources/css/dependency.css +10 -10
  334. common/src/resources/css/tribe-common-admin.css +280 -274
  335. common/src/resources/css/tribe-common-admin.min.css +1 -1
  336. common/src/resources/css/tribe-ui.css +10 -3
  337. common/src/resources/css/tribe-ui.min.css +1 -1
  338. common/src/resources/css/validation.css +10 -7
  339. common/src/resources/css/validation.min.css +1 -1
  340. common/src/resources/images/mascot.png +0 -0
  341. common/src/resources/js/admin-date-preview.min.js +1 -1
  342. common/src/resources/js/admin-log-controls.min.js +1 -1
  343. common/src/resources/js/app-shop.min.js +1 -1
  344. common/src/resources/js/app/components.js +260 -238
  345. common/src/resources/js/app/components.min.js +1 -2
common/lang/tribe-common-af.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: af_ZA\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: af_ZA\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-ar.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: ar\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -365,12 +403,12 @@ msgstr ""
365
  msgid "Events Add-Ons"
366
  msgstr ""
367
 
368
- #: src/Tribe/PUE/Notices.php:383
369
  msgctxt "formatted plugin list"
370
  msgid "%1$s and %2$s"
371
  msgstr ""
372
 
373
- #: src/Tribe/PUE/Notices.php:302
374
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
375
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
376
  msgstr[0] ""
@@ -380,7 +418,7 @@ msgstr[3] ""
380
  msgstr[4] ""
381
  msgstr[5] ""
382
 
383
- #: src/Tribe/PUE/Notices.php:270
384
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
385
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
386
  msgstr[0] ""
@@ -455,11 +493,11 @@ msgstr ""
455
  msgid "English"
456
  msgstr ""
457
 
458
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
459
  msgid " (opens in a new window)"
460
  msgstr ""
461
 
462
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
463
  msgid "Renew Your License Now"
464
  msgstr ""
465
 
11
  "Language: ar\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
403
  msgid "Events Add-Ons"
404
  msgstr ""
405
 
406
+ #: src/Tribe/PUE/Notices.php:440
407
  msgctxt "formatted plugin list"
408
  msgid "%1$s and %2$s"
409
  msgstr ""
410
 
411
+ #: src/Tribe/PUE/Notices.php:359
412
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
413
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
414
  msgstr[0] ""
418
  msgstr[4] ""
419
  msgstr[5] ""
420
 
421
+ #: src/Tribe/PUE/Notices.php:327
422
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
423
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
424
  msgstr[0] ""
493
  msgid "English"
494
  msgstr ""
495
 
496
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
497
  msgid " (opens in a new window)"
498
  msgstr ""
499
 
500
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
501
  msgid "Renew Your License Now"
502
  msgstr ""
503
 
common/lang/tribe-common-bg_BG.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: bg\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: bg\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-ca.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: ca\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: ca\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-cs_CZ.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: cs_CZ\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr "Procházet veškerá rozšíření"
362
  msgid "Events Add-Ons"
363
  msgstr "Events Add-Ons"
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr "%1$s a %2$s"
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr "Ano, automaticky sdílet mé informace o systému s technickou podporou
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr "(otevře se v novém okně)"
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr "Obnovte si svou licenci"
456
 
11
  "Language: cs_CZ\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr "Events Add-Ons"
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr "%1$s a %2$s"
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr "(otevře se v novém okně)"
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr "Obnovte si svou licenci"
494
 
common/lang/tribe-common-da_DK.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: da_DK\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: da_DK\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-de_DE.mo CHANGED
Binary file
common/lang/tribe-common-de_DE.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-10-29 21:32:54+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,9 +11,47 @@ msgstr ""
11
  "Language: de\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
- msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
@@ -142,11 +180,11 @@ msgstr "Die neue Version von %1$s ist verfügbar. %2$s"
142
  msgid "Update now to version %s."
143
  msgstr "Jetzt auf die neuste %s Version aktualisieren."
144
 
145
- #: src/Tribe/PUE/Notices.php:340
146
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
147
  msgstr "Sie können den Status Ihrer Lizenzen jederzeit überprüfen, indem Sie sich in %1$s Ihrem Konto auf theeventscalendar.com%2$s anmelden."
148
 
149
- #: src/Tribe/PUE/Notices.php:225
150
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
151
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
152
  msgstr[0] "Es sieht so aus, als würdest du %1$s verwenden, aber der Lizenzschlüssel ist ungültig. Bitte laden Sie die neueste Version %2$s von Ihrem Konto %3$s."
@@ -364,18 +402,18 @@ msgstr "All Add-Ons anzeigen"
364
  msgid "Events Add-Ons"
365
  msgstr "Events Add-Ons"
366
 
367
- #: src/Tribe/PUE/Notices.php:383
368
  msgctxt "formatted plugin list"
369
  msgid "%1$s and %2$s"
370
  msgstr "%1$s und %2$s"
371
 
372
- #: src/Tribe/PUE/Notices.php:302
373
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
374
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
375
  msgstr[0] "Sie haben einen Lizenzschlüssel für %1$s eingegeben, aber der Schlüssel wird schon verwendet. %2$sBesuchen Sie die Events Calendar Website%3$s, um Ihre Installationen zu verwalten, Ihre Lizenz zu aktualisieren oder eine neue zu kaufen."
376
  msgstr[1] "Sie haben Lizenzschlüssel für %1$s eingegeben, aber die Schlüssel werden schon verwendet. %2$sBesuchen Sie die Events Calendar Website%3$s, um Ihre Installationen zu verwalten, Ihre Lizenzen zu aktualisieren oder neue zu kaufen."
377
 
378
- #: src/Tribe/PUE/Notices.php:270
379
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
380
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
381
  msgstr[0] "Für %1$s steht ein Update zur Verfügung, aber Ihre Lizenz ist abgelaufen. %2$sBesuchen Sie die Events Calendar Website, um Ihre Lizenz zu verlängern.%3$s"
@@ -446,11 +484,11 @@ msgstr "Ja, teile meine System Informationen automatisch mit dem Modern Tribe Su
446
  msgid "English"
447
  msgstr "Englisch"
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr "(in neuem Fenster öffnen)"
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr "Lizenz jetzt erneuern"
456
 
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 19:27:19+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: de\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
+ msgstr "Leeren"
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
180
  msgid "Update now to version %s."
181
  msgstr "Jetzt auf die neuste %s Version aktualisieren."
182
 
183
+ #: src/Tribe/PUE/Notices.php:397
184
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
185
  msgstr "Sie können den Status Ihrer Lizenzen jederzeit überprüfen, indem Sie sich in %1$s Ihrem Konto auf theeventscalendar.com%2$s anmelden."
186
 
187
+ #: src/Tribe/PUE/Notices.php:282
188
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
189
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
190
  msgstr[0] "Es sieht so aus, als würdest du %1$s verwenden, aber der Lizenzschlüssel ist ungültig. Bitte laden Sie die neueste Version %2$s von Ihrem Konto %3$s."
402
  msgid "Events Add-Ons"
403
  msgstr "Events Add-Ons"
404
 
405
+ #: src/Tribe/PUE/Notices.php:440
406
  msgctxt "formatted plugin list"
407
  msgid "%1$s and %2$s"
408
  msgstr "%1$s und %2$s"
409
 
410
+ #: src/Tribe/PUE/Notices.php:359
411
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
412
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
413
  msgstr[0] "Sie haben einen Lizenzschlüssel für %1$s eingegeben, aber der Schlüssel wird schon verwendet. %2$sBesuchen Sie die Events Calendar Website%3$s, um Ihre Installationen zu verwalten, Ihre Lizenz zu aktualisieren oder eine neue zu kaufen."
414
  msgstr[1] "Sie haben Lizenzschlüssel für %1$s eingegeben, aber die Schlüssel werden schon verwendet. %2$sBesuchen Sie die Events Calendar Website%3$s, um Ihre Installationen zu verwalten, Ihre Lizenzen zu aktualisieren oder neue zu kaufen."
415
 
416
+ #: src/Tribe/PUE/Notices.php:327
417
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
418
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
419
  msgstr[0] "Für %1$s steht ein Update zur Verfügung, aber Ihre Lizenz ist abgelaufen. %2$sBesuchen Sie die Events Calendar Website, um Ihre Lizenz zu verlängern.%3$s"
484
  msgid "English"
485
  msgstr "Englisch"
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr "(in neuem Fenster öffnen)"
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr "Lizenz jetzt erneuern"
494
 
common/lang/tribe-common-el.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: el_GR\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: el_GR\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-en_GB.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: en_GB\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: en_GB\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-es_ES.mo CHANGED
Binary file
common/lang/tribe-common-es_ES.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-09-24 17:52:45+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,21 +11,59 @@ msgstr ""
11
  "Language: es\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
20
- msgstr ""
21
 
22
  #: src/Tribe/Admin/Notice/Php_Version.php:101
23
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
24
- msgstr ""
25
 
26
  #: src/Tribe/Admin/Notice/Php_Version.php:98
27
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
28
- msgstr ""
29
 
30
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
31
  msgid "Every %d Minutes"
@@ -37,7 +75,7 @@ msgstr "Busque en nuestra mesa de ayuda"
37
 
38
  #: src/Tribe/Plugins_API.php:71
39
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
40
- msgstr ""
41
 
42
  #: src/Tribe/Validate.php:184
43
  msgid "%s must not be empty"
@@ -101,7 +139,7 @@ msgstr "Seleccionar todas las páginas"
101
 
102
  #: src/Tribe/Main.php:249
103
  msgid "All items on this page were selected. "
104
- msgstr "Se han seleccionado todos los elementos de esta página"
105
 
106
  #: src/Tribe/Plugins_API.php:94
107
  msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
@@ -139,11 +177,11 @@ msgstr "Hay una versión nueva de %1$s disponible. %2$s"
139
  msgid "Update now to version %s."
140
  msgstr "Actualice ahora a la versión %s."
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "Siempre puede verificar el estado de sus licencias iniciando sesión en %1$ssu cuenta de theeventscalendar.com%2$s."
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "Al parecer, está usando %1$s, pero la clave de licencia no es válida. Descargue la última versión %2$sdesde su cuenta%3$s."
@@ -361,18 +399,18 @@ msgstr "Explorar todos los complementos"
361
  msgid "Events Add-Ons"
362
  msgstr "Complementos para eventos"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s y %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] "Usted posee una clave de licencia para %1$s pero la clave agotó las instalaciones. %2$sVisite el sitio web de the Events Calendar%3$s para administrar sus instalaciones, actualizar la licencia o comprar una nueva."
373
  msgstr[1] "Usted tiene claves de licencia para %1$s pero las claves agotaron las instalaciones. %2$sVisite el sitio web de the Events Calendar%3$s para administrar sus instalaciones, actualizar las licencias o comprar nuevas."
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "Hay una actualización disponible para %1$s pero su licencia ha expirado. %2$sVisite el sitio web de the Events Calendar para renovar su licencia.%3$s"
@@ -443,11 +481,11 @@ msgstr "Sí, compartir automáticamente mi información de sistema con el equipo
443
  msgid "English"
444
  msgstr "Inglés"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr " (se abre en una ventana nueva)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Renueve la licencia ahora"
453
 
@@ -526,7 +564,7 @@ msgstr "Event Tickets Plus y Community Events"
526
 
527
  #: src/Tribe/Plugins_API.php:104
528
  msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
529
- msgstr "Habilite a los organizadores de Community Events para ofrecer entradas a sus eventos. Puede establecer opciones de pago y tarifas flexibles. También pueden registrar a los asistentes en sus eventos. Todo esto administrado desde la interfaz de usuario de su sitio web sin necesidad de dar acceso a su administración en ningún momento"
530
 
531
  #: src/Tribe/Plugins_API.php:48
532
  msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
@@ -1981,7 +2019,7 @@ msgstr "Botswana"
1981
 
1982
  #: src/Tribe/Languages/Locations.php:83
1983
  msgid "Bosnia and Herzegovina"
1984
- msgstr ""
1985
 
1986
  #: src/Tribe/Languages/Locations.php:82
1987
  msgid "Bolivia"
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 16:20:04+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: es\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
58
+ msgstr "Event Aggregator adjunta una funcionalidad de importación masiva a su calendario. Antes de saberlo, estará importando eventos desde Meetup, Eventbrite, Google Calendar, iCalendar y otras URL con facilidad. Programe importaciones para que se ejecuten en forma automática en segundo plano o ejecútelas de forma manual cuando esté listo. Prosiga e importe el contenido a un punto central: Event Aggregator lo conecta con un panel central ubicado en la administración para que la gestión de las importaciones sea de lo más simple."
59
 
60
  #: src/Tribe/Admin/Notice/Php_Version.php:101
61
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
62
+ msgstr "A partir de marzo de 2019, %1$s ya no operará con versiones anteriores a PHP 5.4. Actualmente, su sitio web usa la versión PHP %2$s. Para obtener mejores resultados, le recomendamos usar PHP 5.6 o posterior."
63
 
64
  #: src/Tribe/Admin/Notice/Php_Version.php:98
65
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
66
+ msgstr "A partir de marzo de 2019, %1$s ya no operará con versiones anteriores a PHP 5.6. Actualmente, su sitio web usa la versión PHP %2$s, la cual dejará de ser compatible con %1$s. Para obtener mejores resultados, le recomendamos usar PHP 5.6 o posterior."
67
 
68
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
69
  msgid "Every %d Minutes"
75
 
76
  #: src/Tribe/Plugins_API.php:71
77
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
78
+ msgstr "Event Tickets Plus le permite vender entradas para sus eventos por medio de WooCommerce, Easy Digital Downloads o nuestra herramienta integrada Tribe Commerce. Agregue entradas a sus publicaciones y páginas, o agregue %1$sThe Events Calendar%2$s y venda entradas desde su lista de eventos. Cree formularios de registro personalizados, administre asistentes, use opciones de capacidad personalizadas, y más. El registro de los invitados se facilita con el uso de código QR y nuestra aplicación de lectura exclusiva."
79
 
80
  #: src/Tribe/Validate.php:184
81
  msgid "%s must not be empty"
139
 
140
  #: src/Tribe/Main.php:249
141
  msgid "All items on this page were selected. "
142
+ msgstr "Se han seleccionado todos los elementos de esta página "
143
 
144
  #: src/Tribe/Plugins_API.php:94
145
  msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
177
  msgid "Update now to version %s."
178
  msgstr "Actualice ahora a la versión %s."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "Siempre puede verificar el estado de sus licencias iniciando sesión en %1$ssu cuenta de theeventscalendar.com%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "Al parecer, está usando %1$s, pero la clave de licencia no es válida. Descargue la última versión %2$sdesde su cuenta%3$s."
399
  msgid "Events Add-Ons"
400
  msgstr "Complementos para eventos"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s y %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] "Usted posee una clave de licencia para %1$s pero la clave agotó las instalaciones. %2$sVisite el sitio web de the Events Calendar%3$s para administrar sus instalaciones, actualizar la licencia o comprar una nueva."
411
  msgstr[1] "Usted tiene claves de licencia para %1$s pero las claves agotaron las instalaciones. %2$sVisite el sitio web de the Events Calendar%3$s para administrar sus instalaciones, actualizar las licencias o comprar nuevas."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "Hay una actualización disponible para %1$s pero su licencia ha expirado. %2$sVisite el sitio web de the Events Calendar para renovar su licencia.%3$s"
481
  msgid "English"
482
  msgstr "Inglés"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr " (se abre en una ventana nueva)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Renueve la licencia ahora"
491
 
564
 
565
  #: src/Tribe/Plugins_API.php:104
566
  msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
567
+ msgstr "Habilite a los organizadores de Community Events para ofrecer entradas a sus eventos. Puede establecer opciones de pago y tarifas flexibles. También pueden registrar a los asistentes en sus eventos. Todo esto administrado desde la interfaz de usuario de su sitio web sin necesidad de dar acceso a su administración en ningún momento."
568
 
569
  #: src/Tribe/Plugins_API.php:48
570
  msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
2019
 
2020
  #: src/Tribe/Languages/Locations.php:83
2021
  msgid "Bosnia and Herzegovina"
2022
+ msgstr "Bosnia y Herzegovina"
2023
 
2024
  #: src/Tribe/Languages/Locations.php:82
2025
  msgid "Bolivia"
common/lang/tribe-common-et.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: et_EE\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: et_EE\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-fi.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: fi\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: fi\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-fr_CA.mo CHANGED
Binary file
common/lang/tribe-common-fr_CA.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2015-12-02 18:55:52+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,648 +11,686 @@ msgstr ""
11
  "Language: fr_CA\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
20
- msgstr ""
21
 
22
  #: src/Tribe/Admin/Notice/Php_Version.php:101
23
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
24
- msgstr ""
25
 
26
  #: src/Tribe/Admin/Notice/Php_Version.php:98
27
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
28
- msgstr ""
29
 
30
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
31
  msgid "Every %d Minutes"
32
- msgstr ""
33
 
34
  #: src/admin-views/tribe-options-help.php:33
35
  msgid "Search our support help desk"
36
- msgstr ""
37
 
38
  #: src/Tribe/Plugins_API.php:71
39
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
40
- msgstr ""
41
 
42
  #: src/Tribe/Validate.php:184
43
  msgid "%s must not be empty"
44
- msgstr ""
45
 
46
  #: src/Tribe/Validate.php:545
47
  msgid "%s must be an email address."
48
- msgstr ""
49
 
50
  #: src/Tribe/Languages/Locations.php:252
51
  msgid "Sint Maarten"
52
- msgstr ""
53
 
54
  #: src/Tribe/Languages/Locations.php:245
55
  msgid "São Tomé and Príncipe"
56
- msgstr ""
57
 
58
  #: src/Tribe/Languages/Locations.php:238
59
  msgid "Saint Helena"
60
- msgstr ""
61
 
62
  #: src/Tribe/Languages/Locations.php:237
63
  msgid "Saint Barthélemy"
64
- msgstr ""
65
 
66
  #: src/Tribe/Languages/Locations.php:113
67
  msgid "Curaçao"
68
- msgstr ""
69
 
70
  #: src/Tribe/Languages/Locations.php:103
71
  msgid "Collectivity of Saint Martin"
72
- msgstr ""
73
 
74
  #: src/Tribe/Languages/Locations.php:57
75
  msgid "Åland Islands"
76
- msgstr ""
77
 
78
  #: src/admin-views/tribe-options-help.php:20
79
  msgid "Check out our %s for developers."
80
- msgstr ""
81
 
82
  #: src/admin-views/tribe-options-help.php:18
83
  msgid "Want to dive deeper?"
84
- msgstr ""
85
 
86
  #: src/admin-views/tribe-options-display.php:28
87
  msgid "The following three fields accept the date format options available to the PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your own date format here</a>."
88
- msgstr ""
89
 
90
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57
91
  msgid "A list of links to the term own, archive and parent REST URL"
92
- msgstr ""
93
 
94
  #: src/Tribe/Main.php:251
95
  msgid "Clear Selection."
96
- msgstr ""
97
 
98
  #: src/Tribe/Main.php:250
99
  msgid "Select all pages"
100
- msgstr ""
101
 
102
  #: src/Tribe/Main.php:249
103
  msgid "All items on this page were selected. "
104
- msgstr ""
105
 
106
  #: src/Tribe/Plugins_API.php:94
107
  msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
108
- msgstr ""
109
 
110
  #: src/Tribe/Ajax/Dropdown.php:243
111
  msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
112
- msgstr ""
113
 
114
  #: src/Tribe/Ajax/Dropdown.php:193
115
  msgid "Empty data set for this dropdown"
116
- msgstr ""
117
 
118
  #: src/Tribe/Ajax/Dropdown.php:180
119
  msgid "Missing data source for this dropdown"
120
- msgstr ""
121
 
122
  #: src/Tribe/Ajax/Dropdown.php:38
123
  msgid "Cannot look for Terms without a taxonomy"
124
- msgstr ""
125
 
126
  #: src/Tribe/Plugins_API.php:60
127
  msgid "Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings."
128
- msgstr ""
129
 
130
  #: src/Tribe/Plugins_API.php:28
131
  msgid "Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust."
132
- msgstr ""
133
 
134
  #: src/Tribe/PUE/Checker.php:1103
135
  msgid "There is a new version of %1$s available. %2$s"
136
- msgstr ""
137
 
138
  #: src/Tribe/PUE/Checker.php:1092
139
  msgid "Update now to version %s."
140
- msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
- msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
- msgstr[0] ""
150
- msgstr[1] ""
151
 
152
  #: src/Tribe/PUE/Checker.php:984
153
  msgid "Please refresh the page and try your request again."
154
- msgstr ""
155
 
156
  #: src/Tribe/Plugins_API.php:129
157
  msgid "Take your image widgets to the next level with Image Widget Plus! We've taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support."
158
- msgstr ""
159
 
160
  #: src/Tribe/Plugins_API.php:125
161
  msgid "Image Widget Plus"
162
- msgstr ""
163
 
164
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
165
  msgid "The URL to the term archive page"
166
- msgstr ""
167
 
168
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
169
  msgid "The number of posts associated with the term"
170
- msgstr ""
171
 
172
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
173
  msgid "The term parent term if any"
174
- msgstr ""
175
 
176
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
177
  msgid "The term description"
178
- msgstr ""
179
 
180
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
181
  msgid "The taxonomy the term belongs to"
182
- msgstr ""
183
 
184
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
185
  msgid "The term slug"
186
- msgstr ""
187
 
188
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
189
  msgid "The term name"
190
- msgstr ""
191
 
192
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
193
  msgid "The WordPress term ID"
194
- msgstr ""
195
 
196
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:37
197
  msgid "The link to the image in the specified size on the site"
198
- msgstr ""
199
 
200
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32
201
  msgid "The image mime-type"
202
- msgstr ""
203
 
204
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
205
  msgid "The image height in pixels in the specified size"
206
- msgstr ""
207
 
208
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
209
  msgid "The image width in pixels in the specified size"
210
- msgstr ""
211
 
212
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:45
213
  msgid "The details about each size available for the image"
214
- msgstr ""
215
 
216
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:41
217
  msgid "The image natural height in pixels"
218
- msgstr ""
219
 
220
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:37
221
  msgid "The image natural width in pixels"
222
- msgstr ""
223
 
224
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:33
225
  msgid "The image file extension"
226
- msgstr ""
227
 
228
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:29
229
  msgid "The image WordPress post ID"
230
- msgstr ""
231
 
232
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:25
233
  msgid "The URL to the full size version of the image"
234
- msgstr ""
235
 
236
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
237
  msgid "The date seconds"
238
- msgstr ""
239
 
240
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
241
  msgid "The date minutes"
242
- msgstr ""
243
 
244
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
245
  msgid "The date hour"
246
- msgstr ""
247
 
248
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
249
  msgid "The date day"
250
- msgstr ""
251
 
252
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
253
  msgid "The date month"
254
- msgstr ""
255
 
256
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
257
  msgid "The date year"
258
- msgstr ""
259
 
260
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34
261
  msgid "A sorted array of all the numeric values for the cost"
262
- msgstr ""
263
 
264
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28
265
  msgid "The position of the currency symbol in the cost string"
266
- msgstr ""
267
 
268
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
269
  msgid "The cost currency symbol"
270
- msgstr ""
271
 
272
  #: src/Tribe/PUE/Checker.php:497
273
  msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features."
274
- msgstr ""
275
 
276
  #: src/Tribe/Validate.php:248
277
  msgid "%s must be a whole number."
278
- msgstr ""
279
 
280
  #: src/Tribe/Settings.php:281 src/Tribe/Settings.php:282
281
  msgid "Events Help"
282
- msgstr ""
283
 
284
  #: src/Tribe/PUE/Checker.php:1678
285
  msgid "Expired license. Consult your network administrator."
286
- msgstr ""
287
 
288
  #: src/Tribe/PUE/Checker.php:1677
289
  msgid "No license entered. Consult your network administrator."
290
- msgstr ""
291
 
292
  #: src/Tribe/PUE/Checker.php:1676
293
  msgid "A valid license has been entered by your network administrator."
294
- msgstr ""
295
 
296
  #: src/Tribe/PUE/Checker.php:550
297
  msgid "Site License Key"
298
- msgstr ""
299
 
300
  #: src/Tribe/PUE/Checker.php:539
301
  msgid "Check this box if you wish to override the network license key with your own"
302
- msgstr ""
303
 
304
  #: src/Tribe/PUE/Checker.php:538
305
  msgid "Override network license key"
306
- msgstr ""
307
 
308
  #: src/Tribe/PUE/Checker.php:529 src/Tribe/PUE/Checker.php:563
309
  msgid "License Key Status:"
310
- msgstr ""
311
 
312
  #: src/Tribe/Customizer.php:643
313
  msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages."
314
- msgstr ""
315
 
316
  #: src/Tribe/Extension.php:368
317
  msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work."
318
- msgstr ""
319
 
320
  #: src/Tribe/Extension.php:144
321
  msgid "Tutorial"
322
- msgstr ""
323
 
324
  #: src/admin-views/app-shop.php:31
325
  msgid "Installed"
326
- msgstr ""
327
 
328
  #: src/admin-views/app-shop.php:29
329
  msgid "Installed Add-Ons"
330
- msgstr ""
331
 
332
  #: src/Tribe/Admin/Notice/Php_Version.php:60
333
  #: src/Tribe/Admin/Notice/Plugin_Download.php:92
334
  msgctxt "the final separator in a list of two or more items"
335
  msgid " and "
336
- msgstr ""
337
 
338
  #: src/Tribe/Admin/Notice/Php_Version.php:59
339
  #: src/Tribe/Admin/Notice/Plugin_Download.php:91
340
  msgctxt "separator used in a list of items"
341
  msgid ", "
342
- msgstr ""
343
 
344
  #: src/admin-views/tribe-options-help.php:55
345
  msgid "Event Log"
346
- msgstr ""
347
 
348
  #: src/admin-views/tribe-options-help.php:42
349
  msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our help desk."
350
- msgstr ""
351
 
352
  #: src/admin-views/app-shop.php:26
353
  msgid "Buy This Add-On"
354
- msgstr ""
355
 
356
  #: src/admin-views/app-shop.php:5
357
  msgid "Browse All Add-Ons"
358
- msgstr ""
359
 
360
  #: src/admin-views/app-shop.php:4
361
  msgid "Events Add-Ons"
362
- msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
- msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
- msgstr[0] ""
373
- msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
- msgstr[0] ""
379
- msgstr[1] ""
380
 
381
  #: src/Tribe/PUE/Checker.php:1062
382
  msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features."
383
- msgstr ""
384
 
385
  #: src/Tribe/PUE/Checker.php:1005
386
  msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support."
387
- msgstr ""
388
 
389
  #: src/Tribe/Admin/Help_Page.php:219 src/Tribe/Plugins_API.php:34
390
  msgid "Event Aggregator"
391
- msgstr ""
392
 
393
  #: src/Tribe/Admin/Notice/Plugin_Download.php:75
394
  msgid "To begin using %1$s, please install and activate the latest version of %2$s."
395
- msgstr ""
396
 
397
  #: src/admin-views/tribe-options-licenses.php:30
398
  msgid "Not seeing an update but expecting one? In WordPress, go to %1$sDashboard > Updates%2$s and click \"Check Again\"."
399
- msgstr ""
400
 
401
  #: src/admin-views/tribe-options-licenses.php:25
402
  msgid "If you're seeing a red message telling you that your key isn't valid or is out of installs, visit %1$s to manage your installs or renew / upgrade your license."
403
- msgstr ""
404
 
405
  #: src/admin-views/tribe-options-licenses.php:22
406
  msgid "Each paid add-on has its own unique license key. Simply paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message."
407
- msgstr ""
408
 
409
  #: src/admin-views/tribe-options-licenses.php:15
410
  msgid "The license key you received when completing your purchase from %1$s will grant you access to support and updates until it expires. You do not need to enter the key below for the plugins to work, but you will need to enter it to get automatic updates. %3$sFind your license keys at %2$s%4$s."
411
- msgstr ""
412
 
413
  #: src/admin-views/tribe-options-licenses.php:11
414
  #: src/admin-views/tribe-options-licenses.php:16
415
  msgid " (opens in new window)"
416
- msgstr ""
417
 
418
  #: src/Tribe/Languages/Locations.php:110
419
  msgid "C&ocirc;te d'Ivoire"
420
- msgstr ""
421
 
422
  #: src/Tribe/Support.php:372
423
  msgid "Unique System Info Key Generated"
424
- msgstr ""
425
 
426
  #: src/Tribe/Support.php:358 src/Tribe/Support.php:384
427
  msgid "Permission Error"
428
- msgstr ""
429
 
430
  #: src/Tribe/Support.php:325 src/Tribe/Support.php:330
431
  msgid "Invalid Key"
432
- msgstr ""
433
 
434
  #: src/Tribe/Support.php:306
435
  msgid "Your system information will only be used by the Modern Tribe support team. All information is stored securely. We do not share this information with any third parties."
436
- msgstr ""
437
 
438
  #: src/Tribe/Support.php:305
439
  msgid "Yes, automatically share my system information with the Modern Tribe support team"
440
- msgstr ""
441
 
442
  #: src/Tribe/Support.php:171
443
  msgid "English"
444
- msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
- msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
- msgstr ""
453
 
454
  #: src/Tribe/Main.php:261
455
  msgid ": Selected 1 row"
456
- msgstr ""
457
 
458
  #: src/Tribe/Main.php:260
459
  msgid ": Selected %d rows"
460
- msgstr ""
461
 
462
  #: src/Tribe/Main.php:255
463
  msgid "Previous"
464
- msgstr ""
465
 
466
  #: src/Tribe/Main.php:253
467
  msgid "All"
468
- msgstr ""
469
 
470
  #: src/Tribe/Main.php:247
471
  msgid "No matching records found"
472
- msgstr ""
473
 
474
  #: src/Tribe/Main.php:246
475
  msgid "(filtered from _MAX_ total entries)"
476
- msgstr ""
477
 
478
  #: src/Tribe/Main.php:245
479
  msgid "Showing 0 to 0 of 0 entries"
480
- msgstr ""
481
 
482
  #: src/Tribe/Main.php:244
483
  msgid "Showing _START_ to _END_ of _TOTAL_ entries"
484
- msgstr ""
485
 
486
  #: src/Tribe/Main.php:243
487
  msgid "No data available in table"
488
- msgstr ""
489
 
490
  #: src/Tribe/Main.php:242
491
  msgid "Show _MENU_ entries"
492
- msgstr ""
493
 
494
  #: src/Tribe/Main.php:240
495
  msgid ": activate to sort column descending"
496
- msgstr ""
497
 
498
  #: src/Tribe/Main.php:239
499
  msgid ": activate to sort column ascending"
500
- msgstr ""
501
 
502
  #: src/Tribe/Main.php:284
503
  msgid "Press \"Cmd + C\" to copy"
504
- msgstr ""
505
 
506
  #: src/Tribe/Main.php:283
507
  msgid "System info copied"
508
- msgstr ""
509
 
510
  #: src/Tribe/Main.php:282 src/admin-views/tribe-options-help.php:50
511
  msgid "Copy to clipboard"
512
- msgstr ""
513
 
514
  #: src/Tribe/Error.php:38
515
  msgid "An Unknown error occurred"
516
- msgstr ""
517
 
518
  #: src/Tribe/Plugins_API.php:116
519
  msgid "The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar."
520
- msgstr ""
521
 
522
  #: src/Tribe/Plugins_API.php:105
523
  msgctxt "Names of required plugins for Community Tickets"
524
  msgid "Event Tickets Plus and Community Events"
525
- msgstr ""
526
 
527
  #: src/Tribe/Plugins_API.php:104
528
  msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
529
- msgstr ""
530
 
531
  #: src/Tribe/Plugins_API.php:48
532
  msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
533
- msgstr ""
534
 
535
  #: src/Tribe/Plugins_API.php:84
536
  msgid "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar."
537
- msgstr ""
538
 
539
  #: src/Tribe/Admin/Help_Page.php:227 src/Tribe/Plugins_API.php:80
540
  msgid "Filter Bar"
541
- msgstr ""
542
 
543
  #: src/Tribe/Credits.php:64
544
  msgid "Rate %1$sEvent Tickets%2$s %3$s"
545
- msgstr ""
546
 
547
  #: src/Tribe/Credits.php:55
548
  msgid "Rate %1$sThe Events Calendar%2$s %3$s"
549
- msgstr ""
550
 
551
  #: src/Tribe/Log/Null_Logger.php:26
552
  msgid "Null logger (will log nothing)"
553
- msgstr ""
554
 
555
  #: src/admin-views/event-log.php:117
556
  msgid "Download log"
557
- msgstr ""
558
 
559
  #: src/admin-views/event-log.php:100
560
  msgid "The selected log file is empty or has not been generated yet."
561
- msgstr ""
562
 
563
  #: src/admin-views/event-log.php:43
564
  msgid "Method"
565
- msgstr ""
566
 
567
  #: src/admin-views/event-log.php:21
568
  msgid "Logging level"
569
- msgstr ""
570
 
571
  #: src/Tribe/Validate.php:168
572
  msgid "%s must contain numbers, letters, dashes and undescores only"
573
- msgstr ""
574
 
575
  #: src/Tribe/Log.php:376
576
  msgid "Full debug (all events)"
577
- msgstr ""
578
 
579
  #: src/Tribe/Log.php:375
580
  msgid "Warnings and errors"
581
- msgstr ""
582
 
583
  #: src/Tribe/Log.php:374
584
  msgid "Only errors"
585
- msgstr ""
586
 
587
  #: src/Tribe/Log.php:373
588
  msgid "Disabled"
589
- msgstr ""
590
 
591
  #: src/Tribe/Log.php:274
592
  msgid "Cannot set %s as the current logging engine"
593
- msgstr ""
594
 
595
  #: src/Tribe/Log/File_Logger.php:128
596
  msgid "Default (uses temporary files)"
597
- msgstr ""
598
 
599
  #: src/Tribe/Log/Admin.php:148
600
  msgctxt "log engines"
601
  msgid "None currently available"
602
- msgstr ""
603
 
604
  #: src/Tribe/Log/Admin.php:133
605
  msgctxt "log selector"
606
  msgid "None currently available"
607
- msgstr ""
608
 
609
  #: src/admin-views/tribe-options-help.php:52
610
  msgid "Recent Template Changes"
611
- msgstr ""
612
 
613
  #: src/Tribe/Support/Template_Checker_Report.php:115
614
  msgid "Information about recent template changes and potentially impacted template overrides is provided below."
615
- msgstr ""
616
 
617
  #: src/Tribe/Support/Template_Checker_Report.php:113
618
  msgid "No notable template changes detected."
619
- msgstr ""
620
 
621
  #: src/Tribe/Support/Template_Checker_Report.php:97
622
  msgid "based on %s version"
623
- msgstr ""
624
 
625
  #: src/Tribe/Support/Template_Checker_Report.php:96
626
  msgid "version data missing from override"
627
- msgstr ""
628
 
629
  #: src/Tribe/Support/Template_Checker_Report.php:92
630
  msgid "Existing theme overrides that may need revision:"
631
- msgstr ""
632
 
633
  #: src/Tribe/Support/Template_Checker_Report.php:82
634
  msgid "Templates introduced or updated with this release (%s):"
635
- msgstr ""
636
 
637
  #: src/Tribe/Support/Template_Checker_Report.php:78
638
  msgid "No notable changes detected"
639
- msgstr ""
640
 
641
  #. Description of the plugin/theme
642
  msgid "An event settings framework for managing shared options"
643
- msgstr ""
644
 
645
  #. Plugin Name of the plugin/theme
646
  msgid "Tribe Common"
647
- msgstr ""
648
 
649
  #: src/admin-views/tribe-options-licenses.php:47
650
  msgid "Only license fields for %1$snetwork activated%2$s plugins will be listed on this screen. "
651
- msgstr ""
652
 
653
  #: src/admin-views/tribe-options-help.php:38
654
  msgid "Read more about our support policy"
655
- msgstr ""
656
 
657
  #: src/admin-views/tribe-options-help.php:30
658
  msgid "Please note that all hands-on support is provided via the forums. You can email or tweet at us… ​but we will probably point you back to the forums "
@@ -660,183 +698,183 @@ msgstr ""
660
 
661
  #: src/admin-views/tribe-options-help.php:33
662
  msgid "%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the help desk is open only to paid customers, they are open for anyone to search and review."
663
- msgstr ""
664
 
665
  #: src/admin-views/tribe-options-help.php:32
666
  msgid "Test for a theme or plugin conflict"
667
- msgstr ""
668
 
669
  #: src/admin-views/tribe-options-help.php:32
670
  msgid "%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful."
671
- msgstr ""
672
 
673
  #: src/admin-views/tribe-options-help.php:31
674
  msgid "Check our Knowledgebase"
675
- msgstr ""
676
 
677
  #: src/admin-views/tribe-options-help.php:31
678
  msgid "%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!"
679
- msgstr ""
680
 
681
  #: src/admin-views/tribe-options-help.php:27
682
  msgid "While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:"
683
- msgstr ""
684
 
685
  #: src/admin-views/tribe-options-help.php:26
686
  msgid "Getting More Help"
687
- msgstr ""
688
 
689
  #: src/admin-views/tribe-options-help.php:21
690
  msgid "list of available functions"
691
- msgstr ""
692
 
693
  #: src/admin-views/tribe-options-help.php:15
694
  msgid "Knowledgebase"
695
- msgstr ""
696
 
697
  #: src/admin-views/tribe-options-help.php:15
698
  msgid "Our website’s %s is a great place to find tips and tricks for using and customizing our plugins."
699
- msgstr ""
700
 
701
  #: src/admin-views/tribe-options-help.php:14
702
  msgid "Getting Support"
703
- msgstr ""
704
 
705
  #: src/admin-views/tribe-options-help.php:11
706
  msgid "Thank you for using %s! All of us at Modern Tribe sincerely appreciate your support and we’re excited to see you using our plugins."
707
- msgstr ""
708
 
709
  #: src/admin-views/tribe-options-general.php:15
710
  msgid "Optimize your site's event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s."
711
- msgstr ""
712
 
713
  #: src/admin-views/tribe-options-general.php:10
714
  msgid "Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we're excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started."
715
- msgstr ""
716
 
717
  #: src/Tribe/Validate.php:214
718
  msgid "%s must be a positive number or percent."
719
- msgstr ""
720
 
721
  #: src/Tribe/PUE/Checker.php:940
722
  msgid "Thanks for setting up a valid key. It will expire on %s"
723
- msgstr ""
724
 
725
  #: src/Tribe/Admin/Help_Page.php:860
726
  msgid "Visit the Add-on Page"
727
- msgstr ""
728
 
729
  #: src/Tribe/Admin/Help_Page.php:855
730
  msgid "Plugin Inactive"
731
- msgstr ""
732
 
733
  #: src/Tribe/Admin/Help_Page.php:853
734
  msgid "Plugin Active"
735
- msgstr ""
736
 
737
  #: src/Tribe/Admin/Help_Page.php:828
738
  msgid "Rating:"
739
- msgstr ""
740
 
741
  #: src/Tribe/Admin/Help_Page.php:825
742
  msgid "Active Users:"
743
- msgstr ""
744
 
745
  #: src/Tribe/Admin/Help_Page.php:802
746
  msgid "Install Plugin"
747
- msgstr ""
748
 
749
  #: src/Tribe/Admin/Help_Page.php:802
750
  msgid "Install %s"
751
- msgstr ""
752
 
753
  #: src/Tribe/Admin/Help_Page.php:786
754
  msgid "Upgrade Plugin"
755
- msgstr ""
756
 
757
  #: src/Tribe/Admin/Help_Page.php:778
758
  msgid "Activate Plugin"
759
- msgstr ""
760
 
761
  #: src/Tribe/Admin/Help_Page.php:778
762
  msgid "Activate %s"
763
- msgstr ""
764
 
765
  #: src/Tribe/Admin/Help_Page.php:244 src/Tribe/Plugins_API.php:100
766
  msgid "Community Tickets"
767
- msgstr ""
768
 
769
  #: src/Tribe/Admin/Help_Page.php:235 src/Tribe/Plugins_API.php:66
770
  msgid "Event Tickets Plus"
771
- msgstr ""
772
 
773
  #: src/Tribe/Admin/Help_Page.php:203 src/Tribe/Plugins_API.php:111
774
  msgid "Eventbrite Tickets"
775
- msgstr ""
776
 
777
  #: src/Tribe/Admin/Help_Page.php:170
778
  msgid " and "
779
- msgstr ""
780
 
781
  #: src/Tribe/Admin/Help_Page.php:95
782
  msgid "Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes."
783
- msgstr ""
784
 
785
  #: src/Tribe/Admin/Help_Page.php:91
786
  msgid "Advanced Post Manager"
787
- msgstr ""
788
 
789
  #: src/Tribe/Admin/Help_Page.php:79
790
  msgid "Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events."
791
- msgstr ""
792
 
793
  #: src/Tribe/Admin/Help_Page.php:75 src/Tribe/Plugins_API.php:57
794
  msgid "Event Tickets"
795
- msgstr ""
796
 
797
  #: src/Tribe/Admin/Help_Page.php:63
798
  msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events."
799
- msgstr ""
800
 
801
  #. Author URI of the plugin/theme
802
  msgid "http://m.tri.be/1x"
803
- msgstr ""
804
 
805
  #. Author of the plugin/theme
806
  msgid "Modern Tribe, Inc."
807
- msgstr ""
808
 
809
  #: src/Tribe/Settings.php:371
810
  msgid "Save Changes"
811
- msgstr ""
812
 
813
  #: src/admin-views/tribe-options-licenses.php:38
814
  msgid "%1$s Using our plugins in a multisite network? %2$s Please note that your license key will be applied to the entire network, not just this site."
815
- msgstr ""
816
 
817
  #: src/Tribe/Support.php:199
818
  msgid "Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!"
819
- msgstr ""
820
 
821
  #: src/Tribe/PUE/Checker.php:909
822
  msgid "unknown date"
823
- msgstr ""
824
 
825
  #: src/Tribe/Admin/Activation_Page.php:92
826
  msgid "Return to WordPress Updates"
827
- msgstr ""
828
 
829
  #: src/Tribe/Admin/Activation_Page.php:92
830
  msgid "Go to WordPress Updates page"
831
- msgstr ""
832
 
833
  #: src/Tribe/Admin/Activation_Page.php:84
834
  msgid "Return to Plugins page"
835
- msgstr ""
836
 
837
  #: src/Tribe/Admin/Activation_Page.php:84
838
  msgid "Go to plugins page"
839
- msgstr ""
840
 
841
  #: src/Tribe/Cost_Utils.php:114
842
  msgid "Free"
@@ -844,64 +882,64 @@ msgstr "Gratuit"
844
 
845
  #: src/admin-views/tribe-options-network.php:27
846
  msgid "Hide the following settings tabs on every site:"
847
- msgstr "Masquer les onglets paramètres suivants sur chaque site :"
848
 
849
  #: src/admin-views/tribe-options-network.php:19
850
  msgid "This is where all of the global network settings for Modern Tribe's The Events Calendar can be modified."
851
- msgstr "Cest ici que tous les réglages globaux de réseau du plugin peuvent être modifiés."
852
 
853
  #: src/admin-views/tribe-options-network.php:15
854
  msgid "Network Settings"
855
- msgstr "Paramétrages réseau"
856
 
857
  #: src/admin-views/tribe-options-help.php:74
858
  msgid "News and Tutorials"
859
- msgstr "News et tutoriels"
860
 
861
  #: src/Tribe/Admin/Help_Page.php:847
862
  msgid "Premium Add-Ons"
863
- msgstr "Modules de prime"
864
 
865
  #: src/Tribe/Admin/Help_Page.php:823
866
  msgid "WordPress "
867
- msgstr "WordPress"
868
 
869
  #: src/Tribe/Admin/Help_Page.php:822 src/admin-views/app-shop.php:77
870
  msgid "Requires:"
871
- msgstr "Exigences :"
872
 
873
  #: src/Tribe/Admin/Help_Page.php:819
874
  msgid "Latest Version:"
875
- msgstr "Dernière Version :"
876
 
877
  #: src/admin-views/tribe-options-help.php:80
878
  msgid "More..."
879
- msgstr "Plus"
880
 
881
  #: src/Tribe/Admin/Help_Page.php:194 src/Tribe/Plugins_API.php:43
882
  msgid "Events Calendar PRO"
883
- msgstr ""
884
 
885
  #: src/Tribe/Admin/Help_Page.php:413 src/Tribe/Admin/Help_Page.php:788
886
  msgid "You are up to date!"
887
- msgstr "Vous êtes à jour !"
888
 
889
  #: src/Tribe/Admin/Help_Page.php:413
890
  msgid "You need to upgrade!"
891
- msgstr "Vous devez mettre à niveau !"
892
 
893
  #: src/Tribe/Admin/Help_Page.php:405
894
  msgctxt "not available"
895
  msgid "n/a"
896
- msgstr "n/d"
897
 
898
  #: src/admin-views/tribe-options-general.php:59
899
  msgid "Debug Bar Plugin"
900
- msgstr "Barre du débogage d'extension"
901
 
902
  #: src/admin-views/tribe-options-general.php:59
903
  msgid "Enable this option to log debug information. By default this will log to your server PHP error log. If you'd like to see the log messages in your browser, then we recommend that you install the %s and look for the \"Tribe\" tab in the debug output."
904
- msgstr "Activer cette option pour enregistrer les informations de débogage. Par défaut les informations seront enregistrés sur le ficher denregistrement de votre serveur PHP (Error Log). Si vous souhaitez voir les messages enregistrés sur votre navigateur, nous vous recommandons dinstaller %s et de rechercher longlet « Tribe »."
905
 
906
  #: src/admin-views/tribe-options-general.php:53
907
  msgid "Debug mode"
@@ -909,31 +947,31 @@ msgstr "Mode de débogage"
909
 
910
  #: src/admin-views/tribe-options-general.php:35
911
  msgid "Show The Events Calendar link"
912
- msgstr "Afficher un lien vers le calendrier des événements"
913
 
914
  #: src/admin-views/tribe-options-general.php:30
915
  msgid "See an example of the link"
916
- msgstr "Voir un exemple de la lien"
917
 
918
  #: src/admin-views/tribe-options-general.php:30
919
  msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project."
920
- msgstr "Envisagez-vous \"Wow, ce plugin est incroyable! Je dois dire merci à Modern Tribe pour leur travail acharné.\" La plus grande grâce que nous pourrions demander est la reconnaissance. Ajouter un petit lien texte seulement au bas de votre calendrier pointant vers Le projet Evénements Calendrier."
921
 
922
  #: src/admin-views/tribe-options-general.php:25
923
  msgid "We hope our plugin is helping you out."
924
- msgstr "Nous espérons que notre plugin peut vous dépanner."
925
 
926
  #: src/admin-views/tribe-options-general.php:20
927
  msgid "Check out the available add-ons"
928
- msgstr "Découvrez les modules complémentaires disponibles"
929
 
930
  #: src/admin-views/tribe-options-general.php:20
931
  msgid "Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?"
932
- msgstr "Vous cherchez des fonctionnalités supplémentaires, y compris les événements récurrents, meta personnalisée, événements communautaires, vente de billets, etc. ?"
933
 
934
  #: src/admin-views/tribe-options-display.php:37
935
  msgid "Select the date format to use in datepickers"
936
- msgstr "Sélectionnez le format de date à utiliser dans les sélectionneurs de date"
937
 
938
  #: src/admin-views/tribe-options-display.php:36
939
  msgid "Datepicker Date Format"
@@ -941,15 +979,15 @@ msgstr "Format de date du sélecteur de date"
941
 
942
  #: src/admin-views/tribe-options-display.php:22
943
  msgid "Date Format Settings"
944
- msgstr "Paramètres de Format de date"
945
 
946
  #: src/admin-views/event-log.php:65
947
  msgid "View"
948
- msgstr "Voir"
949
 
950
  #: src/Tribe/Admin/Help_Page.php:211 src/Tribe/Plugins_API.php:90
951
  msgid "Community Events"
952
- msgstr "Événements communautaires"
953
 
954
  #: src/Tribe/Languages/Locations.php:374
955
  msgid "Wyoming"
@@ -961,7 +999,7 @@ msgstr "Wisconsin"
961
 
962
  #: src/Tribe/Languages/Locations.php:372
963
  msgid "West Virginia"
964
- msgstr "Virginie-Occidentale"
965
 
966
  #: src/Tribe/Languages/Locations.php:371
967
  msgid "Washington"
@@ -1045,7 +1083,7 @@ msgstr "Nevada"
1045
 
1046
  #: src/Tribe/Languages/Locations.php:351
1047
  msgid "Nebraska"
1048
- msgstr "Nébraska"
1049
 
1050
  #: src/Tribe/Languages/Locations.php:350
1051
  msgid "Montana"
@@ -1109,7 +1147,7 @@ msgstr "Idaho"
1109
 
1110
  #: src/Tribe/Languages/Locations.php:335
1111
  msgid "Hawaii"
1112
- msgstr "Hawaï"
1113
 
1114
  #: src/Tribe/Languages/Locations.php:333
1115
  msgid "Florida"
@@ -1169,23 +1207,23 @@ msgstr "Sahara occidental"
1169
 
1170
  #: src/Tribe/Languages/Locations.php:293
1171
  msgid "Wallis and Futuna Islands"
1172
- msgstr ""
1173
 
1174
  #: src/Tribe/Languages/Locations.php:292
1175
  msgid "Virgin Islands (U.S.)"
1176
- msgstr "Îles Vierges américaines"
1177
 
1178
  #: src/Tribe/Languages/Locations.php:291
1179
  msgid "Virgin Islands (British)"
1180
- msgstr "Îles Vierges (britanniques)"
1181
 
1182
  #: src/Tribe/Languages/Locations.php:290
1183
  msgid "Viet Nam"
1184
- msgstr "Viêt Nam"
1185
 
1186
  #: src/Tribe/Languages/Locations.php:289
1187
  msgid "Venezuela"
1188
- msgstr "Vénézuéla"
1189
 
1190
  #: src/Tribe/Languages/Locations.php:288
1191
  msgid "Vanuatu"
@@ -1193,7 +1231,7 @@ msgstr "Vanuatu"
1193
 
1194
  #: src/Tribe/Languages/Locations.php:287
1195
  msgid "Uzbekistan"
1196
- msgstr "Uzbekistan"
1197
 
1198
  #: src/Tribe/Languages/Locations.php:286
1199
  msgid "Uruguay"
@@ -1209,7 +1247,7 @@ msgstr "Royaume-Uni"
1209
 
1210
  #: src/Tribe/Languages/Locations.php:283
1211
  msgid "United Arab Emirates"
1212
- msgstr "Émirats Arabes Unis"
1213
 
1214
  #: src/Tribe/Languages/Locations.php:282
1215
  msgid "Ukraine"
@@ -1225,7 +1263,7 @@ msgstr "Tuvalu"
1225
 
1226
  #: src/Tribe/Languages/Locations.php:279
1227
  msgid "Turks and Caicos Islands"
1228
- msgstr ""
1229
 
1230
  #: src/Tribe/Languages/Locations.php:278
1231
  msgid "Turkmenistan"
@@ -1241,7 +1279,7 @@ msgstr "Tunisie"
1241
 
1242
  #: src/Tribe/Languages/Locations.php:275
1243
  msgid "Trinidad and Tobago"
1244
- msgstr ""
1245
 
1246
  #: src/Tribe/Languages/Locations.php:274
1247
  msgid "Tonga"
@@ -1249,7 +1287,7 @@ msgstr "Tonga"
1249
 
1250
  #: src/Tribe/Languages/Locations.php:273
1251
  msgid "Tokelau"
1252
- msgstr "Tokélaou"
1253
 
1254
  #: src/Tribe/Languages/Locations.php:272
1255
  msgid "Togo"
@@ -1261,11 +1299,11 @@ msgstr "Thaïlande"
1261
 
1262
  #: src/Tribe/Languages/Locations.php:270
1263
  msgid "Tanzania, United Republic of"
1264
- msgstr ""
1265
 
1266
  #: src/Tribe/Languages/Locations.php:269
1267
  msgid "Tajikistan"
1268
- msgstr "Tajikistan"
1269
 
1270
  #: src/Tribe/Languages/Locations.php:268
1271
  msgid "Taiwan"
@@ -1289,7 +1327,7 @@ msgstr "Swaziland"
1289
 
1290
  #: src/Tribe/Languages/Locations.php:263
1291
  msgid "Svalbard and Jan Mayen Islands"
1292
- msgstr ""
1293
 
1294
  #: src/Tribe/Languages/Locations.php:262
1295
  msgid "Suriname"
@@ -1301,7 +1339,7 @@ msgstr "Soudan"
1301
 
1302
  #: src/Tribe/Languages/Locations.php:241
1303
  msgid "Saint Pierre and Miquelon"
1304
- msgstr ""
1305
 
1306
  #: src/Tribe/Languages/Locations.php:260
1307
  msgid "Sri Lanka"
@@ -1313,11 +1351,11 @@ msgstr "Espagne"
1313
 
1314
  #: src/Tribe/Languages/Locations.php:258
1315
  msgid "South Georgia, South Sandwich Islands"
1316
- msgstr "Géorgie du Sud et îles Sandwich du Sud,"
1317
 
1318
  #: src/Tribe/Languages/Locations.php:257
1319
  msgid "South Africa"
1320
- msgstr "Afrique du sud"
1321
 
1322
  #: src/Tribe/Languages/Locations.php:256
1323
  msgid "Somalia"
@@ -1325,7 +1363,7 @@ msgstr "Somalie"
1325
 
1326
  #: src/Tribe/Languages/Locations.php:255
1327
  msgid "Solomon Islands"
1328
- msgstr "Îles Salomon"
1329
 
1330
  #: src/Tribe/Languages/Locations.php:254
1331
  msgid "Slovenia"
@@ -1333,7 +1371,7 @@ msgstr "Slovénie"
1333
 
1334
  #: src/Tribe/Languages/Locations.php:253
1335
  msgid "Slovakia (Slovak Republic)"
1336
- msgstr "Slovaquie (République slovaque)"
1337
 
1338
  #: src/Tribe/Languages/Locations.php:251
1339
  msgid "Singapore"
@@ -1361,7 +1399,7 @@ msgstr "Arabie Saoudite"
1361
 
1362
  #: src/Tribe/Languages/Locations.php:244
1363
  msgid "San Marino"
1364
- msgstr "San Marino"
1365
 
1366
  #: src/Tribe/Languages/Locations.php:243
1367
  msgid "Samoa"
@@ -1369,15 +1407,15 @@ msgstr "Samoa"
1369
 
1370
  #: src/Tribe/Languages/Locations.php:242
1371
  msgid "Saint Vincent and The Grenadines"
1372
- msgstr ""
1373
 
1374
  #: src/Tribe/Languages/Locations.php:240
1375
  msgid "Saint Lucia"
1376
- msgstr "Sainte-Lucie"
1377
 
1378
  #: src/Tribe/Languages/Locations.php:239
1379
  msgid "Saint Kitts and Nevis"
1380
- msgstr ""
1381
 
1382
  #: src/Tribe/Languages/Locations.php:236
1383
  msgid "Rwanda"
@@ -1385,7 +1423,7 @@ msgstr "Rwanda"
1385
 
1386
  #: src/Tribe/Languages/Locations.php:235
1387
  msgid "Russian Federation"
1388
- msgstr "Fédération de Russie"
1389
 
1390
  #: src/Tribe/Languages/Locations.php:234
1391
  msgid "Romania"
@@ -1401,7 +1439,7 @@ msgstr "Qatar"
1401
 
1402
  #: src/Tribe/Languages/Locations.php:231
1403
  msgid "Puerto Rico"
1404
- msgstr "Porto Rico"
1405
 
1406
  #: src/Tribe/Languages/Locations.php:230
1407
  msgid "Portugal"
@@ -1413,7 +1451,7 @@ msgstr "Pologne"
1413
 
1414
  #: src/Tribe/Languages/Locations.php:228
1415
  msgid "Pitcairn"
1416
- msgstr "Îles Pitcairn"
1417
 
1418
  #: src/Tribe/Languages/Locations.php:227
1419
  msgid "Philippines"
@@ -1429,7 +1467,7 @@ msgstr "Paraguay"
1429
 
1430
  #: src/Tribe/Languages/Locations.php:224
1431
  msgid "Papua New Guinea"
1432
- msgstr "Papouasie Nouvelle-Guinée"
1433
 
1434
  #: src/Tribe/Languages/Locations.php:223
1435
  msgid "Panama"
@@ -1437,7 +1475,7 @@ msgstr "Panama"
1437
 
1438
  #: src/Tribe/Languages/Locations.php:222
1439
  msgid "Palau"
1440
- msgstr "Palaos"
1441
 
1442
  #: src/Tribe/Languages/Locations.php:221
1443
  msgid "Pakistan"
@@ -1453,11 +1491,11 @@ msgstr "Norvège"
1453
 
1454
  #: src/Tribe/Languages/Locations.php:218
1455
  msgid "Northern Mariana Islands"
1456
- msgstr "Iles Mariannes du Nord"
1457
 
1458
  #: src/Tribe/Languages/Locations.php:217
1459
  msgid "Norfolk Island"
1460
- msgstr "Île Norfolk"
1461
 
1462
  #: src/Tribe/Languages/Locations.php:216
1463
  msgid "Niue"
@@ -1465,7 +1503,7 @@ msgstr "Niue"
1465
 
1466
  #: src/Tribe/Languages/Locations.php:215
1467
  msgid "Nigeria"
1468
- msgstr "Nigéria"
1469
 
1470
  #: src/Tribe/Languages/Locations.php:214
1471
  msgid "Niger"
@@ -1477,11 +1515,11 @@ msgstr "Nicaragua"
1477
 
1478
  #: src/Tribe/Languages/Locations.php:212
1479
  msgid "New Zealand"
1480
- msgstr "Nouvelle-Zélande"
1481
 
1482
  #: src/Tribe/Languages/Locations.php:211
1483
  msgid "New Caledonia"
1484
- msgstr "Nouvelle-Calédonie"
1485
 
1486
  #: src/Tribe/Languages/Locations.php:210
1487
  msgid "Netherlands"
@@ -1489,7 +1527,7 @@ msgstr "Pays-Bas"
1489
 
1490
  #: src/Tribe/Languages/Locations.php:209
1491
  msgid "Nepal"
1492
- msgstr "Nepal"
1493
 
1494
  #: src/Tribe/Languages/Locations.php:208
1495
  msgid "Nauru"
@@ -1509,7 +1547,7 @@ msgstr "Mozambique"
1509
 
1510
  #: src/Tribe/Languages/Locations.php:204
1511
  msgid "Morocco"
1512
- msgstr "Maroc"
1513
 
1514
  #: src/Tribe/Languages/Locations.php:203
1515
  msgid "Montserrat"
@@ -1517,7 +1555,7 @@ msgstr "Montserrat"
1517
 
1518
  #: src/Tribe/Languages/Locations.php:202
1519
  msgid "Montenegro"
1520
- msgstr "Montenegro"
1521
 
1522
  #: src/Tribe/Languages/Locations.php:201
1523
  msgid "Mongolia"
@@ -1529,11 +1567,11 @@ msgstr "Monaco"
1529
 
1530
  #: src/Tribe/Languages/Locations.php:199
1531
  msgid "Moldova, Republic of"
1532
- msgstr ""
1533
 
1534
  #: src/Tribe/Languages/Locations.php:198
1535
  msgid "Micronesia, Federated States of"
1536
- msgstr ""
1537
 
1538
  #: src/Tribe/Languages/Locations.php:197
1539
  msgid "Mexico"
@@ -1545,7 +1583,7 @@ msgstr "Mayotte"
1545
 
1546
  #: src/Tribe/Languages/Locations.php:195
1547
  msgid "Mauritius"
1548
- msgstr "Île Maurice"
1549
 
1550
  #: src/Tribe/Languages/Locations.php:194
1551
  msgid "Mauritania"
@@ -1557,11 +1595,11 @@ msgstr "Martinique"
1557
 
1558
  #: src/Tribe/Languages/Locations.php:192
1559
  msgid "Marshall Islands"
1560
- msgstr "Îles Marshall"
1561
 
1562
  #: src/Tribe/Languages/Locations.php:191
1563
  msgid "Malta"
1564
- msgstr "Malte"
1565
 
1566
  #: src/Tribe/Languages/Locations.php:190
1567
  msgid "Mali"
@@ -1573,7 +1611,7 @@ msgstr "Maldives"
1573
 
1574
  #: src/Tribe/Languages/Locations.php:188
1575
  msgid "Malaysia"
1576
- msgstr "Malaisie"
1577
 
1578
  #: src/Tribe/Languages/Locations.php:187
1579
  msgid "Malawi"
@@ -1605,7 +1643,7 @@ msgstr "Liechtenstein"
1605
 
1606
  #: src/Tribe/Languages/Locations.php:180
1607
  msgid "Libya"
1608
- msgstr "Lybie"
1609
 
1610
  #: src/Tribe/Languages/Locations.php:179
1611
  msgid "Liberia"
@@ -1625,11 +1663,11 @@ msgstr "Lettonie"
1625
 
1626
  #: src/Tribe/Languages/Locations.php:175
1627
  msgid "Lao People's Democratic Republic"
1628
- msgstr "République démocratique populaire du Lao"
1629
 
1630
  #: src/Tribe/Languages/Locations.php:174
1631
  msgid "Kyrgyzstan"
1632
- msgstr "Kirghizistan"
1633
 
1634
  #: src/Tribe/Languages/Locations.php:173
1635
  msgid "Kuwait"
@@ -1637,11 +1675,11 @@ msgstr "Koweït"
1637
 
1638
  #: src/Tribe/Languages/Locations.php:172
1639
  msgid "Korea, Republic of"
1640
- msgstr ""
1641
 
1642
  #: src/Tribe/Languages/Locations.php:171
1643
  msgid "Korea, Democratic People's Republic of"
1644
- msgstr ""
1645
 
1646
  #: src/Tribe/Languages/Locations.php:170
1647
  msgid "Kiribati"
@@ -1685,7 +1723,7 @@ msgstr "Irak"
1685
 
1686
  #: src/Tribe/Languages/Locations.php:160
1687
  msgid "Iran, Islamic Republic of"
1688
- msgstr ""
1689
 
1690
  #: src/Tribe/Languages/Locations.php:159
1691
  msgid "Indonesia"
@@ -1713,11 +1751,11 @@ msgstr "Honduras"
1713
 
1714
  #: src/Tribe/Languages/Locations.php:153
1715
  msgid "Holy See (Vatican City State)"
1716
- msgstr "Ville Sainte (État de la Cité du Vatican)"
1717
 
1718
  #: src/Tribe/Languages/Locations.php:152
1719
  msgid "Heard and McDonald Islands"
1720
- msgstr ""
1721
 
1722
  #: src/Tribe/Languages/Locations.php:151
1723
  msgid "Haiti"
@@ -1725,7 +1763,7 @@ msgstr "Haïti"
1725
 
1726
  #: src/Tribe/Languages/Locations.php:150
1727
  msgid "Guyana"
1728
- msgstr "Guyane"
1729
 
1730
  #: src/Tribe/Languages/Locations.php:149
1731
  msgid "Guinea-Bissau"
@@ -1773,7 +1811,7 @@ msgstr "Allemagne"
1773
 
1774
  #: src/Tribe/Languages/Locations.php:138 src/Tribe/Languages/Locations.php:334
1775
  msgid "Georgia"
1776
- msgstr "Georgia"
1777
 
1778
  #: src/Tribe/Languages/Locations.php:137
1779
  msgid "Gambia"
@@ -1785,7 +1823,7 @@ msgstr "Gabon"
1785
 
1786
  #: src/Tribe/Languages/Locations.php:135
1787
  msgid "French Southern Territories"
1788
- msgstr "Terres Australes Françaises"
1789
 
1790
  #: src/Tribe/Languages/Locations.php:134
1791
  msgid "French Polynesia"
@@ -1805,15 +1843,15 @@ msgstr "Finlande"
1805
 
1806
  #: src/Tribe/Languages/Locations.php:130
1807
  msgid "Fiji"
1808
- msgstr "Fiji"
1809
 
1810
  #: src/Tribe/Languages/Locations.php:129
1811
  msgid "Faroe Islands"
1812
- msgstr "Îles Féroé"
1813
 
1814
  #: src/Tribe/Languages/Locations.php:128
1815
  msgid "Falkland Islands (Malvinas)"
1816
- msgstr "Îles Falkland"
1817
 
1818
  #: src/Tribe/Languages/Locations.php:127
1819
  msgid "Ethiopia"
@@ -1833,7 +1871,7 @@ msgstr "Guinée équatoriale"
1833
 
1834
  #: src/Tribe/Languages/Locations.php:123
1835
  msgid "El Salvador"
1836
- msgstr "Salvador"
1837
 
1838
  #: src/Tribe/Languages/Locations.php:122
1839
  msgid "Egypt"
@@ -1845,11 +1883,11 @@ msgstr "Équateur"
1845
 
1846
  #: src/Tribe/Languages/Locations.php:120
1847
  msgid "East Timor"
1848
- msgstr "Loro Sae"
1849
 
1850
  #: src/Tribe/Languages/Locations.php:119
1851
  msgid "Dominican Republic"
1852
- msgstr "République Dominicaine"
1853
 
1854
  #: src/Tribe/Languages/Locations.php:118
1855
  msgid "Dominica"
@@ -1877,7 +1915,7 @@ msgstr "Cuba"
1877
 
1878
  #: src/Tribe/Languages/Locations.php:111
1879
  msgid "Croatia (Local Name: Hrvatska)"
1880
- msgstr "Croatie"
1881
 
1882
  #: src/Tribe/Languages/Locations.php:109
1883
  msgid "Costa Rica"
@@ -1885,11 +1923,11 @@ msgstr "Costa Rica"
1885
 
1886
  #: src/Tribe/Languages/Locations.php:108
1887
  msgid "Cook Islands"
1888
- msgstr "Îles Cook"
1889
 
1890
  #: src/Tribe/Languages/Locations.php:107
1891
  msgid "Congo, Democratic Republic of the"
1892
- msgstr ""
1893
 
1894
  #: src/Tribe/Languages/Locations.php:106
1895
  msgid "Congo"
@@ -1905,11 +1943,11 @@ msgstr "Colombie"
1905
 
1906
  #: src/Tribe/Languages/Locations.php:102
1907
  msgid "Cocos (Keeling) Islands"
1908
- msgstr "Îles Cocos"
1909
 
1910
  #: src/Tribe/Languages/Locations.php:101
1911
  msgid "Christmas Island"
1912
- msgstr "L’île Christmas"
1913
 
1914
  #: src/Tribe/Languages/Locations.php:100
1915
  msgid "China"
@@ -1933,7 +1971,7 @@ msgstr "Îles Caïmans"
1933
 
1934
  #: src/Tribe/Languages/Locations.php:95
1935
  msgid "Cape Verde"
1936
- msgstr "Cap Vert"
1937
 
1938
  #: src/Tribe/Languages/Locations.php:94
1939
  msgid "Canada"
@@ -1961,11 +1999,11 @@ msgstr "Bulgarie"
1961
 
1962
  #: src/Tribe/Languages/Locations.php:88
1963
  msgid "Brunei Darussalam"
1964
- msgstr "Brunéi Darussalam"
1965
 
1966
  #: src/Tribe/Languages/Locations.php:87
1967
  msgid "British Indian Ocean Territory"
1968
- msgstr "Territoire Britannique Océan Indien"
1969
 
1970
  #: src/Tribe/Languages/Locations.php:86
1971
  msgid "Brazil"
@@ -1981,7 +2019,7 @@ msgstr "Botswana"
1981
 
1982
  #: src/Tribe/Languages/Locations.php:83
1983
  msgid "Bosnia and Herzegovina"
1984
- msgstr ""
1985
 
1986
  #: src/Tribe/Languages/Locations.php:82
1987
  msgid "Bolivia"
@@ -2009,7 +2047,7 @@ msgstr "Belgique"
2009
 
2010
  #: src/Tribe/Languages/Locations.php:76
2011
  msgid "Belarus"
2012
- msgstr "Biélorussie"
2013
 
2014
  #: src/Tribe/Languages/Locations.php:75
2015
  msgid "Barbados"
@@ -2021,7 +2059,7 @@ msgstr "Bangladesh"
2021
 
2022
  #: src/Tribe/Languages/Locations.php:73
2023
  msgid "Bahrain"
2024
- msgstr "Bahreïn"
2025
 
2026
  #: src/Tribe/Languages/Locations.php:72
2027
  msgid "Bahamas"
@@ -2029,7 +2067,7 @@ msgstr "Bahamas"
2029
 
2030
  #: src/Tribe/Languages/Locations.php:71
2031
  msgid "Azerbaijan"
2032
- msgstr "Azerbaijan"
2033
 
2034
  #: src/Tribe/Languages/Locations.php:70
2035
  msgid "Austria"
@@ -2037,7 +2075,7 @@ msgstr "Autriche"
2037
 
2038
  #: src/Tribe/Languages/Locations.php:69
2039
  msgid "Australia"
2040
- msgstr "Australie"
2041
 
2042
  #: src/Tribe/Languages/Locations.php:68
2043
  msgid "Aruba"
@@ -2049,11 +2087,11 @@ msgstr "Arménie"
2049
 
2050
  #: src/Tribe/Languages/Locations.php:66
2051
  msgid "Argentina"
2052
- msgstr "Argentine"
2053
 
2054
  #: src/Tribe/Languages/Locations.php:65
2055
  msgid "Antigua and Barbuda"
2056
- msgstr ""
2057
 
2058
  #: src/Tribe/Languages/Locations.php:64
2059
  msgid "Antarctica"
@@ -2069,11 +2107,11 @@ msgstr "Angola"
2069
 
2070
  #: src/Tribe/Languages/Locations.php:61
2071
  msgid "Andorra"
2072
- msgstr "Andorre"
2073
 
2074
  #: src/Tribe/Languages/Locations.php:60
2075
  msgid "American Samoa"
2076
- msgstr "Iles Samoa"
2077
 
2078
  #: src/Tribe/Languages/Locations.php:59
2079
  msgid "Algeria"
@@ -2093,7 +2131,7 @@ msgstr "Choisissez un pays :"
2093
 
2094
  #: src/Tribe/Validate.php:514
2095
  msgid "Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom."
2096
- msgstr "Liste des pays doit être formatée comme un pays par ligne dans le format suivant :<br>EUA, États-Unis d'Amérique<br>RU, Royaume-Uni."
2097
 
2098
  #: src/Tribe/Validate.php:498
2099
  msgid "%s must be a phone number."
@@ -2101,48 +2139,48 @@ msgstr "%s doit être un numéro de téléphone."
2101
 
2102
  #: src/Tribe/Validate.php:484
2103
  msgid "%s must consist of 5 numbers."
2104
- msgstr "%s doit contenir 5 chiffres."
2105
 
2106
  #: src/Tribe/Validate.php:470
2107
  msgid "%s must consist of letters, spaces, apostrophes, and dashes."
2108
- msgstr "%s doit contenir uniquement des lettres, tirets, apostrophes et espaces."
2109
 
2110
  #: src/Tribe/Validate.php:454
2111
  msgid "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
2112
- msgstr "%s doit contenir uniquement des lettres, chiffres, tirets, apostrophes et espaces."
2113
 
2114
  #: src/Tribe/Validate.php:438
2115
  msgid "%s must be a number between 0 and 21."
2116
- msgstr "%s doit être un chiffre entre 0 et 21."
2117
 
2118
  #: src/Tribe/Validate.php:384
2119
  msgid "%s must be a number or percentage."
2120
- msgstr "%s doit être un chiffre ou en pourcentage."
2121
 
2122
  #: src/Tribe/Validate.php:368
2123
  msgid "%s cannot be a duplicate"
2124
- msgstr "%s ne peut être dupliqué"
2125
 
2126
  #: src/Tribe/Validate.php:366
2127
  msgid "%s cannot be the same as %s."
2128
- msgstr "%s ne peut-être pareil à %s."
2129
 
2130
  #: src/Tribe/Validate.php:359
2131
  msgid "Comparison validation failed because no comparison value was provided, for field %s"
2132
- msgstr "Validation de comparaison échoué parce qu’il n’y a pas de valeur de comparaison fourni pour le champ %s"
2133
 
2134
  #: src/Tribe/Validate.php:298 src/Tribe/Validate.php:310
2135
  #: src/Tribe/Validate.php:323 src/Tribe/Validate.php:345
2136
  msgid "%s must have a value that's part of its options."
2137
- msgstr "%s doit contenir une valeur qui font partie de l'une de ses options."
2138
 
2139
  #: src/Tribe/Validate.php:282
2140
  msgid "%s must be a valid absolute URL."
2141
- msgstr "%s doit être un lien URL valide et absolu."
2142
 
2143
  #: src/Tribe/Validate.php:267
2144
  msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
2145
- msgstr "%s doit être une entré valide (nombres, lettres, tirets, et traits de soulignement)."
2146
 
2147
  #: src/Tribe/Validate.php:200 src/Tribe/Validate.php:228
2148
  msgid "%s must be a positive number."
@@ -2150,91 +2188,91 @@ msgstr "%s doit être un nombre positif."
2150
 
2151
  #: src/Tribe/Validate.php:152
2152
  msgid "%s must contain numbers, letters and dots only"
2153
- msgstr "%s doit seulement contenir des chiffres, des lettres et des points"
2154
 
2155
  #: src/Tribe/Validate.php:120 src/Tribe/Validate.php:136
2156
  msgid "%s must contain numbers and letters only"
2157
- msgstr "%s doit contenir seulement que des chiffres et lettres."
2158
 
2159
  #: src/Tribe/Validate.php:105
2160
  msgctxt "non-existant function name passed for field validation"
2161
  msgid "with function name:"
2162
- msgstr "avec le nom de la fonction:"
2163
 
2164
  #: src/Tribe/Validate.php:104
2165
  msgid "Non-existant field validation function passed"
2166
- msgstr "Passé de la fonction de validation de champ non-existant"
2167
 
2168
  #: src/Tribe/Validate.php:73 src/Tribe/Validate.php:85
2169
  #: src/Tribe/Validate.php:105
2170
  msgid "Field ID:"
2171
- msgstr "Champ ID :"
2172
 
2173
  #: src/Tribe/Validate.php:72 src/Tribe/Validate.php:84
2174
  msgid "Invalid or incomplete field passed"
2175
- msgstr "Champ invalide ou incomplet passé"
2176
 
2177
  #: src/Tribe/Support.php:188 src/Tribe/Support.php:189
2178
  msgid "Unknown or not set"
2179
- msgstr "Inconnue ou non définie"
2180
 
2181
  #: src/admin-views/tribe-options-help.php:41
2182
  msgid "System Information"
2183
- msgstr "Informations du système"
2184
 
2185
  #: src/Tribe/Settings_Tab.php:222
2186
  msgid "There are no fields setup for this tab yet."
2187
- msgstr "Il ny a pas encore de configuration de champs pour cet onglet."
2188
 
2189
  #: src/Tribe/Settings.php:621
2190
  msgid "The above setting was not saved. Other settings were successfully saved."
2191
  msgid_plural "The above settings were not saved. Other settings were successfully saved."
2192
- msgstr[0] "Le paramètre ci-dessus n'était pas enregistré. Les autres paramètres ont été enregistrés avec succès."
2193
- msgstr[1] "Les paramètres ci-dessus n'était pas enregistrés. Autres paramètres ont été enregistrés avec succès."
2194
 
2195
  #: src/Tribe/Settings.php:620
2196
  msgid "None of your settings were saved. Please try again."
2197
- msgstr "Aucuns de vos réglages n’ont été sauvés. Merci de réessayer à nouveau."
2198
 
2199
  #: src/Tribe/Settings.php:610
2200
  msgid "Your form had the following errors:"
2201
- msgstr "Votre formulaire a les erreurs suivantes :"
2202
 
2203
  #: src/Tribe/Settings.php:431
2204
  msgid "The request wasn't sent from this tab."
2205
- msgstr "La requête n’à pas été envoyé depuis cet onglet."
2206
 
2207
  #: src/Tribe/Settings.php:425
2208
  msgid "The request was sent insecurely."
2209
- msgstr "Cette requête a été envoyer de manière non-sécurisée."
2210
 
2211
  #: src/Tribe/Settings.php:419
2212
  msgid "You don't have permission to do that."
2213
- msgstr "Vous navez pas la permission deffectuer ceci."
2214
 
2215
  #: src/Tribe/Settings.php:363
2216
  msgid "You've requested a non-existent tab."
2217
- msgstr "Vous avez demandé un onglet inexistant."
2218
 
2219
  #: src/Tribe/Settings.php:349
2220
  msgid "%s Settings"
2221
- msgstr "%s Paramètres"
2222
 
2223
  #: src/Tribe/Settings.php:253 src/Tribe/Settings.php:273
2224
  msgid "Events Settings"
2225
- msgstr "Paramètres d'événements"
2226
 
2227
  #: src/Tribe/PUE/Checker.php:896
2228
  msgid "Hmmm... something's wrong with this validator. Please contact %ssupport%s."
2229
- msgstr ""
2230
 
2231
  #: src/Tribe/PUE/Checker.php:935
2232
  msgid "Valid Key! Expires on %s"
2233
- msgstr "Clé valide! Expire le%s"
2234
 
2235
  #: src/Tribe/PUE/Checker.php:915
2236
  msgid "Sorry, key validation server is not available."
2237
- msgstr "Désolé, le serveur de validation des clés nest pas disponible."
2238
 
2239
  #: src/Tribe/PUE/Checker.php:650
2240
  msgid "License key(s) updated."
@@ -2246,15 +2284,15 @@ msgstr "Une clé de licence valide est nécessaire pour le support et les mises
2246
 
2247
  #: src/Tribe/PUE/Checker.php:509 src/Tribe/PUE/Checker.php:520
2248
  msgid "License Key"
2249
- msgstr "Clé de Licence"
2250
 
2251
  #: src/Tribe/Main.php:248
2252
  msgid "Search:"
2253
- msgstr ""
2254
 
2255
  #: src/Tribe/Settings.php:254
2256
  msgid "Settings"
2257
- msgstr "Paramètres"
2258
 
2259
  #: src/Tribe/Settings_Manager.php:219
2260
  msgid "Network"
@@ -2262,7 +2300,7 @@ msgstr "Réseau"
2262
 
2263
  #: src/Tribe/Main.php:274
2264
  msgid "Done"
2265
- msgstr "Terminer"
2266
 
2267
  #: src/Tribe/Main.php:273 src/Tribe/Main.php:275
2268
  msgid "Today"
@@ -2274,7 +2312,7 @@ msgstr "Précédent"
2274
 
2275
  #: src/Tribe/Main.php:254 src/Tribe/Main.php:271
2276
  msgid "Next"
2277
- msgstr "Prochain"
2278
 
2279
  #: src/Tribe/Settings_Manager.php:279
2280
  msgid "Help"
@@ -2282,17 +2320,17 @@ msgstr "Aide"
2282
 
2283
  #: src/Tribe/Settings_Manager.php:55
2284
  msgid "Display"
2285
- msgstr "Montrer"
2286
 
2287
  #: src/Tribe/Settings_Manager.php:253
2288
  #: src/admin-views/tribe-options-licenses.php:66
2289
  msgid "Licenses"
2290
- msgstr "Licenses"
2291
 
2292
  #: src/Tribe/Admin/Help_Page.php:59 src/Tribe/Customizer.php:642
2293
  #: src/Tribe/Plugins_API.php:25
2294
  msgid "The Events Calendar"
2295
- msgstr "Calendrier d'événements"
2296
 
2297
  #: src/Tribe/Settings.php:177 src/Tribe/Settings.php:241
2298
  #: src/Tribe/Settings.php:242
@@ -2301,7 +2339,7 @@ msgstr "Événements"
2301
 
2302
  #: src/Tribe/Settings.php:643
2303
  msgid "Settings saved."
2304
- msgstr "Paramètres enregistrés."
2305
 
2306
  #: src/Tribe/Settings_Manager.php:54
2307
  msgid "General"
@@ -2309,29 +2347,29 @@ msgstr "Général"
2309
 
2310
  #: src/Tribe/Field.php:626
2311
  msgid "No select options specified"
2312
- msgstr "Option de sélection non-spécifié"
2313
 
2314
  #: src/Tribe/Field.php:568
2315
  msgid "No checkbox options specified"
2316
- msgstr "Option de case non spécifié"
2317
 
2318
  #: src/Tribe/Field.php:532
2319
  msgid "No radio options specified"
2320
- msgstr "Option de bouton non-spécifié"
2321
 
2322
  #: src/Tribe/Field.php:231
2323
  msgid "Invalid field type specified"
2324
- msgstr "type de champs invalide spécifié"
2325
 
2326
  #: src/Tribe/Credits.php:31
2327
  msgid "This calendar is powered by The Events Calendar."
2328
- msgstr "Ce calendrier est propulsé par Events Calendar,"
2329
 
2330
  #: src/Tribe/App_Shop.php:50 src/Tribe/App_Shop.php:51
2331
  #: src/Tribe/App_Shop.php:72
2332
  msgid "Event Add-Ons"
2333
- msgstr "Extensions Événement"
2334
 
2335
  #: src/Tribe/Languages/Locations.php:55
2336
  msgid "United States"
2337
- msgstr "États-Unis"
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 16:28:37+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: fr_CA\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
58
+ msgstr "L'agrégateur d'événements ajoute une fonctionnalité d'importation massive à votre calendrier. Avant de l'avoir réalisé, vous serez en train d'importer des événements à partir de Meetup, d'Eventbrite, de Google Calendar, d'iCalendar et d'autres URL avec facilité. Programmez des importations automatiques en coulisses ou effectuez-les manuellement lorsque vous êtes prêt. Allez-y et importez tout votre soûl : l'agrégateur d'événements vous relie à un tableau de commandes central dans l'administration afin de rendre vos importations aussi simples que bonjour."
59
 
60
  #: src/Tribe/Admin/Notice/Php_Version.php:101
61
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
62
+ msgstr "À partir de mars 2019, %1$s ne fonctionnera plus avec les versions antérieures à PHP 5.4. Votre site utilise actuellement la version PHP %2$s. Pour de meilleurs résultats, nous conseillons d'utiliser la version PHP 5.6 ou ultérieure."
63
 
64
  #: src/Tribe/Admin/Notice/Php_Version.php:98
65
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
66
+ msgstr "À partir de mars 2019, %1$s ne prendra plus en charge les versions antérieures à PHP 5.6. Votre site utilise actuellement la version PHP %2$s qui ne sera plus prise en charge par %1$s. Pour de meilleurs résultats, nous conseillons d'utiliser la version PHP 5.6 ou ultérieure."
67
 
68
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
69
  msgid "Every %d Minutes"
70
+ msgstr "Toutes les %d minutes"
71
 
72
  #: src/admin-views/tribe-options-help.php:33
73
  msgid "Search our support help desk"
74
+ msgstr "Cherchez sur notre bureau d'assistance"
75
 
76
  #: src/Tribe/Plugins_API.php:71
77
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
78
+ msgstr "Event Tickets Plus vous permet de vendre des billets pour vos événements en utilisant WooCommerce, Easy Digital Downloads, ou notre outil intégré Tribe Commerce. Ajoutez des billets à vos pages et publications, ou ajoutez %1$sThe Events Calendar%2$s et vendez des billets depuis les annonces de votre événement. Créez des formulaires d'inscription personnalisés, gérez les participants, utilisez les options de capacité personnalisées et autres. L'enregistrement des invités est simple avec les codes QR et notre appli de scan personnalisée."
79
 
80
  #: src/Tribe/Validate.php:184
81
  msgid "%s must not be empty"
82
+ msgstr "%s ne doit pas être vide"
83
 
84
  #: src/Tribe/Validate.php:545
85
  msgid "%s must be an email address."
86
+ msgstr "%s doit être une adresse e-mail."
87
 
88
  #: src/Tribe/Languages/Locations.php:252
89
  msgid "Sint Maarten"
90
+ msgstr "Saint-Martin"
91
 
92
  #: src/Tribe/Languages/Locations.php:245
93
  msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
94
+ msgstr "Sao Tomé-et-Principe"
95
 
96
  #: src/Tribe/Languages/Locations.php:238
97
  msgid "Saint Helena"
98
+ msgstr "Sainte-Hélène"
99
 
100
  #: src/Tribe/Languages/Locations.php:237
101
  msgid "Saint Barth&eacute;lemy"
102
+ msgstr "Saint-Barthélemy"
103
 
104
  #: src/Tribe/Languages/Locations.php:113
105
  msgid "Cura&ccedil;ao"
106
+ msgstr "Curaçao"
107
 
108
  #: src/Tribe/Languages/Locations.php:103
109
  msgid "Collectivity of Saint Martin"
110
+ msgstr "Saint-Martin (France)"
111
 
112
  #: src/Tribe/Languages/Locations.php:57
113
  msgid "&Aring;land Islands"
114
+ msgstr "Åland Islands"
115
 
116
  #: src/admin-views/tribe-options-help.php:20
117
  msgid "Check out our %s for developers."
118
+ msgstr "Jetez un coup d’œil sur %s pour les développeurs."
119
 
120
  #: src/admin-views/tribe-options-help.php:18
121
  msgid "Want to dive deeper?"
122
+ msgstr "Vous voulez plonger plus profondément ?"
123
 
124
  #: src/admin-views/tribe-options-display.php:28
125
  msgid "The following three fields accept the date format options available to the PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your own date format here</a>."
126
+ msgstr "Les trois champs suivants acceptent les options de format de date disponibles pour la fonction %1$s PHP. <a href=\"%2$s\" target=\"_blank\">Découvrez ici comment créer votre propre format de date</a>."
127
 
128
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57
129
  msgid "A list of links to the term own, archive and parent REST URL"
130
+ msgstr "Une liste de liens vers l'URL REST propre, archive et parente du terme"
131
 
132
  #: src/Tribe/Main.php:251
133
  msgid "Clear Selection."
134
+ msgstr "Effacer la sélection."
135
 
136
  #: src/Tribe/Main.php:250
137
  msgid "Select all pages"
138
+ msgstr "Sélectionner toutes les pages"
139
 
140
  #: src/Tribe/Main.php:249
141
  msgid "All items on this page were selected. "
142
+ msgstr "Tous les éléments de cette page ont été sélectionnés. "
143
 
144
  #: src/Tribe/Plugins_API.php:94
145
  msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
146
+ msgstr "Acceptez des événements envoyés par les utilisateurs sur votre site ! Grâce à Community Events, vous pouvez accepter les envois publics ou demander une connexion par un compte. Les paramètres vous donnent le choix d'enregistrer comme brouillon ou de publier automatiquement, d'activer des catégories et balises, et de choisir si les utilisateurs peuvent éditer et gérer ou non leurs propres événements ou simplement les envoyer. Encore mieux, l'installation est simple ! Il vous suffit d'activer, de configurer les options, et c'est parti."
147
 
148
  #: src/Tribe/Ajax/Dropdown.php:243
149
  msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
150
+ msgstr "La source \"%s\" est invalide et ne peut être atteinte sur l'instance \"%s\"."
151
 
152
  #: src/Tribe/Ajax/Dropdown.php:193
153
  msgid "Empty data set for this dropdown"
154
+ msgstr "Ensemble de données vide pour ce déroulant"
155
 
156
  #: src/Tribe/Ajax/Dropdown.php:180
157
  msgid "Missing data source for this dropdown"
158
+ msgstr "Source de données manquante pour ce déroulant"
159
 
160
  #: src/Tribe/Ajax/Dropdown.php:38
161
  msgid "Cannot look for Terms without a taxonomy"
162
+ msgstr "Impossible de chercher des Termes sans une taxonomie"
163
 
164
  #: src/Tribe/Plugins_API.php:60
165
  msgid "Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings."
166
+ msgstr "Event Tickets propose aux visiteurs une manière simple d'envoyer un RSVP à vos événements. En tant que plugin indépendant, il vous permet d'ajouter une fonctionnalité RSVP aux publications ou aux pages. Lorsqu'il est apparié à The Events Calendar, vous pouvez ajouter cette même fonctionnalité RSVP directement aux annonces de votre événement."
167
 
168
  #: src/Tribe/Plugins_API.php:28
169
  msgid "Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust."
170
+ msgstr "Créez un calendrier d'événements et gérez-le facilement. Le plugin de The Events Calendar propose une qualité de niveaux professionnel et des fonctionnalités assurées par une équipe en laquelle vous pouvez avoir confiance."
171
 
172
  #: src/Tribe/PUE/Checker.php:1103
173
  msgid "There is a new version of %1$s available. %2$s"
174
+ msgstr "Une nouvelle version de %1$s est disponible. %2$s"
175
 
176
  #: src/Tribe/PUE/Checker.php:1092
177
  msgid "Update now to version %s."
178
+ msgstr "Passez à présent à la version %s."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
+ msgstr "Vous pouvez toujours vérifier le statut de vos licences en vous connectant à votre compte %1$s sur le site theeventscalendar.com%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
+ msgstr[0] "On dirait que vous utilisez %1$s, mais la clé de licence est invalide. Veuillez télécharger la version la plus récente %2$sdepuis votre compte%3$s."
188
+ msgstr[1] "On dirait que vous utilisez %1$s, mais les clés de licence sont invalides. Veuillez télécharger la version la plus récente %2$sdepuis votre comtpe%3$s."
189
 
190
  #: src/Tribe/PUE/Checker.php:984
191
  msgid "Please refresh the page and try your request again."
192
+ msgstr "Veuillez actualiser la page et réessayez votre demande."
193
 
194
  #: src/Tribe/Plugins_API.php:129
195
  msgid "Take your image widgets to the next level with Image Widget Plus! We've taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support."
196
+ msgstr "Faites passer vos widgets d'images au niveau supérieur avec Image Widget Plus ! Nous avons utilisé la fonctionnalité simple de notre Image Widget de base et l'avons embelli de plusieurs demandes populaires de fonctionnalités, prise en charge de plusieurs images, diaporama, éclairage et images aléatoires, le tout reposant sur une assistance premium d'un an complet."
197
 
198
  #: src/Tribe/Plugins_API.php:125
199
  msgid "Image Widget Plus"
200
+ msgstr "Image Widget Plus"
201
 
202
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
203
  msgid "The URL to the term archive page"
204
+ msgstr "L'URL vers la page d'archive des termes"
205
 
206
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
207
  msgid "The number of posts associated with the term"
208
+ msgstr "Le nombre de publications associées au terme"
209
 
210
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
211
  msgid "The term parent term if any"
212
+ msgstr "Le terme du terme parent le cas échéant"
213
 
214
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
215
  msgid "The term description"
216
+ msgstr "La description du terme"
217
 
218
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
219
  msgid "The taxonomy the term belongs to"
220
+ msgstr "La taxonomie à laquelle le terme appartient"
221
 
222
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
223
  msgid "The term slug"
224
+ msgstr "Le terme slug"
225
 
226
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
227
  msgid "The term name"
228
+ msgstr "Le nom du terme"
229
 
230
  #: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
231
  msgid "The WordPress term ID"
232
+ msgstr "L'ID WordPress du terme"
233
 
234
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:37
235
  msgid "The link to the image in the specified size on the site"
236
+ msgstr "Le lien vers l'image de la taille spécifiée sur le site"
237
 
238
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32
239
  msgid "The image mime-type"
240
+ msgstr "Le type MIME de l'image"
241
 
242
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
243
  msgid "The image height in pixels in the specified size"
244
+ msgstr "La hauteur de l'image en pixels à la taille spécifiée"
245
 
246
  #: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
247
  msgid "The image width in pixels in the specified size"
248
+ msgstr "La largeur de l'image en pixels à la taille spécifiée"
249
 
250
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:45
251
  msgid "The details about each size available for the image"
252
+ msgstr "Les détails à propos de chaque taille disponible pour l'image"
253
 
254
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:41
255
  msgid "The image natural height in pixels"
256
+ msgstr "La hauteur naturelle de l'image en pixels"
257
 
258
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:37
259
  msgid "The image natural width in pixels"
260
+ msgstr "La largeur naturelle de l'image en pixels"
261
 
262
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:33
263
  msgid "The image file extension"
264
+ msgstr "L'extension de fichier de l'image"
265
 
266
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:29
267
  msgid "The image WordPress post ID"
268
+ msgstr "L'ID de publication WordPress de l'image"
269
 
270
  #: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:25
271
  msgid "The URL to the full size version of the image"
272
+ msgstr "L'URL vers la version de pleine taille de l'image"
273
 
274
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
275
  msgid "The date seconds"
276
+ msgstr "Les secondes de la date"
277
 
278
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
279
  msgid "The date minutes"
280
+ msgstr "Les minutes de la date"
281
 
282
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
283
  msgid "The date hour"
284
+ msgstr "L'heure de la date"
285
 
286
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
287
  msgid "The date day"
288
+ msgstr "Le jour de la date"
289
 
290
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
291
  msgid "The date month"
292
+ msgstr "Le mois de la date"
293
 
294
  #: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
295
  msgid "The date year"
296
+ msgstr "L'année de la date"
297
 
298
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34
299
  msgid "A sorted array of all the numeric values for the cost"
300
+ msgstr "Un choix ordonné de toutes les valeurs numériques pour le coût"
301
 
302
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28
303
  msgid "The position of the currency symbol in the cost string"
304
+ msgstr "La position du symbole de devise dans la chaîne du coût"
305
 
306
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
307
  msgid "The cost currency symbol"
308
+ msgstr "Le symbole de devise du coût"
309
 
310
  #: src/Tribe/PUE/Checker.php:497
311
  msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features."
312
+ msgstr "%1$sAcheter une licence%2$s pour le service Event Aggregator afin d'accéder à des fonctionnalités d'importation supplémentaires."
313
 
314
  #: src/Tribe/Validate.php:248
315
  msgid "%s must be a whole number."
316
+ msgstr "%s doit être un nombre complet."
317
 
318
  #: src/Tribe/Settings.php:281 src/Tribe/Settings.php:282
319
  msgid "Events Help"
320
+ msgstr "Assistance aux événements"
321
 
322
  #: src/Tribe/PUE/Checker.php:1678
323
  msgid "Expired license. Consult your network administrator."
324
+ msgstr "Licence expirée. Consultez votre administrateur réseau."
325
 
326
  #: src/Tribe/PUE/Checker.php:1677
327
  msgid "No license entered. Consult your network administrator."
328
+ msgstr "Aucune licence saisie. Consultez votre administrateur réseau."
329
 
330
  #: src/Tribe/PUE/Checker.php:1676
331
  msgid "A valid license has been entered by your network administrator."
332
+ msgstr "Une licence valide a été saisie par votre administrateur réseau."
333
 
334
  #: src/Tribe/PUE/Checker.php:550
335
  msgid "Site License Key"
336
+ msgstr "Clé de licence du site"
337
 
338
  #: src/Tribe/PUE/Checker.php:539
339
  msgid "Check this box if you wish to override the network license key with your own"
340
+ msgstr "Cochez cette case si vous voulez outrepasser la clé de licence du réseau avec la votre"
341
 
342
  #: src/Tribe/PUE/Checker.php:538
343
  msgid "Override network license key"
344
+ msgstr "Outrepasser la clé de licence du réseau"
345
 
346
  #: src/Tribe/PUE/Checker.php:529 src/Tribe/PUE/Checker.php:563
347
  msgid "License Key Status:"
348
+ msgstr "Statut de la clé de licence :"
349
 
350
  #: src/Tribe/Customizer.php:643
351
  msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages."
352
+ msgstr "Utilisez le panneau suivant de votre personnalisateur pour modifier le style de vos pages Calendrier et Evénement."
353
 
354
  #: src/Tribe/Extension.php:368
355
  msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work."
356
+ msgstr "Impossible de lancer Tribe Extensions. L'hébergeur de votre site Web utilise PHP 5.2 ou antérieur et a sans doute désactivé ou mal configuré debug_backtrace(). Vous, ou votre hébergeur de site Web, devrez mettre à jour PHP ou configurer correctement debug_backtrace() pour que Tribe Extensions fonctionne."
357
 
358
  #: src/Tribe/Extension.php:144
359
  msgid "Tutorial"
360
+ msgstr "Tutoriel"
361
 
362
  #: src/admin-views/app-shop.php:31
363
  msgid "Installed"
364
+ msgstr "Installé"
365
 
366
  #: src/admin-views/app-shop.php:29
367
  msgid "Installed Add-Ons"
368
+ msgstr "Extensions installées"
369
 
370
  #: src/Tribe/Admin/Notice/Php_Version.php:60
371
  #: src/Tribe/Admin/Notice/Plugin_Download.php:92
372
  msgctxt "the final separator in a list of two or more items"
373
  msgid " and "
374
+ msgstr " et "
375
 
376
  #: src/Tribe/Admin/Notice/Php_Version.php:59
377
  #: src/Tribe/Admin/Notice/Plugin_Download.php:91
378
  msgctxt "separator used in a list of items"
379
  msgid ", "
380
+ msgstr ", "
381
 
382
  #: src/admin-views/tribe-options-help.php:55
383
  msgid "Event Log"
384
+ msgstr "Journal d'événements"
385
 
386
  #: src/admin-views/tribe-options-help.php:42
387
  msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our help desk."
388
+ msgstr "Les détails de votre plugin et paramètres de votre calendrier sont souvent nécessaires pour que vous ou votre personnel puisse résoudre un problème. Veuillez adhérer ci-dessous pour partager automatiquement les informations sur votre système avec notre équipe d'assistance. Ceci nous aidera à vous aider plus rapidement si vous publiez sur notre bureau d'assistance."
389
 
390
  #: src/admin-views/app-shop.php:26
391
  msgid "Buy This Add-On"
392
+ msgstr "Acheter cette extension"
393
 
394
  #: src/admin-views/app-shop.php:5
395
  msgid "Browse All Add-Ons"
396
+ msgstr "Parcourir toutes les extensions"
397
 
398
  #: src/admin-views/app-shop.php:4
399
  msgid "Events Add-Ons"
400
+ msgstr "Extensions d'événements"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
+ msgstr "%1$s et %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
+ msgstr[0] "Vous avez une clé de licence pour %1$s mais la clé est hors des installations. %2$sVisitez le site Web de Events Calendar%3$s pour gérer vos installations, mettre à jour votre licence ou en acheter une nouvelle."
411
+ msgstr[1] "Vous avez des clés de licence pour %1$s mais vos clés sont hors des installations. %2$sVisitez le site Web de Events Calendar%3$s pour gérer vos installations, mettre à jour vos licences ou en acheter de nouvelles."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
+ msgstr[0] "Une mise à jour est disponible pour %1$s mais votre licence a expirée. %2$sVisitez le site Web de Events Calendar pour renouveler votre licence.%3$s"
417
+ msgstr[1] "Des mises à jour sont disponibles pour %1$s mais vos clés de licence ont expirées. %2$sVisitez le site Web de Events Calendar pour renouveler vos licences.%3$s"
418
 
419
  #: src/Tribe/PUE/Checker.php:1062
420
  msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features."
421
+ msgstr "Il y a une mise à jour pour %s. %sRenouvelez votre licence%s pour avoir accès aux éliminations de bogues, aux mises à jour de sécurité et aux nouvelles fonctionnalités."
422
 
423
  #: src/Tribe/PUE/Checker.php:1005
424
  msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support."
425
+ msgstr "Il y a une mise à jour pour %s. Vous devrez %svérifier votre licence%s pour avoir accès aux mises à jour, aux téléchargements et à l'assistance."
426
 
427
  #: src/Tribe/Admin/Help_Page.php:219 src/Tribe/Plugins_API.php:34
428
  msgid "Event Aggregator"
429
+ msgstr "Event Aggregator"
430
 
431
  #: src/Tribe/Admin/Notice/Plugin_Download.php:75
432
  msgid "To begin using %1$s, please install and activate the latest version of %2$s."
433
+ msgstr "Pour commencer d'utiliser %1$s, veuillez installer et activer la dernière version de %2$s."
434
 
435
  #: src/admin-views/tribe-options-licenses.php:30
436
  msgid "Not seeing an update but expecting one? In WordPress, go to %1$sDashboard > Updates%2$s and click \"Check Again\"."
437
+ msgstr "Vous ne voyez pas de mise à jour mais vous en espériez une ? Dans WordPress, allez dans %1$sPanneau de contrôle > Mises à jour%2$s et cliquez sur \"Revérifier\"."
438
 
439
  #: src/admin-views/tribe-options-licenses.php:25
440
  msgid "If you're seeing a red message telling you that your key isn't valid or is out of installs, visit %1$s to manage your installs or renew / upgrade your license."
441
+ msgstr "Si vous voyez un message en rouge vous disant que votre clé est invalide ou se trouve hors des installations, visitez %1$s pour gérer vos installations, renouveler ou mettre à jour votre licence."
442
 
443
  #: src/admin-views/tribe-options-licenses.php:22
444
  msgid "Each paid add-on has its own unique license key. Simply paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message."
445
+ msgstr "Chaque extension payée possède sa propre clé unique de licence. Collez simplement la clé dans son champ approprié ci-dessous et attendez un instant la validation. Vous saurez que tout est prêt lorsque une date d'expiration en vert apparaîtra au côté d'un message \"valide\"."
446
 
447
  #: src/admin-views/tribe-options-licenses.php:15
448
  msgid "The license key you received when completing your purchase from %1$s will grant you access to support and updates until it expires. You do not need to enter the key below for the plugins to work, but you will need to enter it to get automatic updates. %3$sFind your license keys at %2$s%4$s."
449
+ msgstr "La clé de licence que vous avez reçu lorsque vous avez effectué votre achat auprès de %1$s vous donne accès à l'assistance et aux mises à jour jusqu'à son expiration. Vous n'avez pas à saisir la clé ci-dessous pour que les plugin fonctionnent mais vous devrez la saisir pour recevoir les mises à jour automatiques. %3$sVos clés de licence se trouvent sur %2$s%4$s."
450
 
451
  #: src/admin-views/tribe-options-licenses.php:11
452
  #: src/admin-views/tribe-options-licenses.php:16
453
  msgid " (opens in new window)"
454
+ msgstr " (s'ouvre dans une nouvelle fenêtre)"
455
 
456
  #: src/Tribe/Languages/Locations.php:110
457
  msgid "C&ocirc;te d'Ivoire"
458
+ msgstr "Côte d'Ivoire"
459
 
460
  #: src/Tribe/Support.php:372
461
  msgid "Unique System Info Key Generated"
462
+ msgstr "Clé unique d'information système générée"
463
 
464
  #: src/Tribe/Support.php:358 src/Tribe/Support.php:384
465
  msgid "Permission Error"
466
+ msgstr "Erreur de permission"
467
 
468
  #: src/Tribe/Support.php:325 src/Tribe/Support.php:330
469
  msgid "Invalid Key"
470
+ msgstr "Clé invalide"
471
 
472
  #: src/Tribe/Support.php:306
473
  msgid "Your system information will only be used by the Modern Tribe support team. All information is stored securely. We do not share this information with any third parties."
474
+ msgstr "Vos informations système ne seront utilisées que par l'équipe d'assistance de Modern Tribe. Toutes les informations sont conservées en sécurité. Nous ne partageons ces informations avec aucune tierce partie."
475
 
476
  #: src/Tribe/Support.php:305
477
  msgid "Yes, automatically share my system information with the Modern Tribe support team"
478
+ msgstr "Oui, partager automatiquement mes informations système avec l'équipe d'assistance de Modern Tribe"
479
 
480
  #: src/Tribe/Support.php:171
481
  msgid "English"
482
+ msgstr "Anglais"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
+ msgstr " (s'ouvre dans une nouvelle fenêtre)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
+ msgstr "Renouveler maintenant votre licence"
491
 
492
  #: src/Tribe/Main.php:261
493
  msgid ": Selected 1 row"
494
+ msgstr ": a sélectionné une rangée"
495
 
496
  #: src/Tribe/Main.php:260
497
  msgid ": Selected %d rows"
498
+ msgstr ": a sélectionné %d rangées"
499
 
500
  #: src/Tribe/Main.php:255
501
  msgid "Previous"
502
+ msgstr "Précédent"
503
 
504
  #: src/Tribe/Main.php:253
505
  msgid "All"
506
+ msgstr "Tout"
507
 
508
  #: src/Tribe/Main.php:247
509
  msgid "No matching records found"
510
+ msgstr "Aucun enregistrement correspondant trouvé"
511
 
512
  #: src/Tribe/Main.php:246
513
  msgid "(filtered from _MAX_ total entries)"
514
+ msgstr "(filtré à partir du total des saisies _MAX_ )"
515
 
516
  #: src/Tribe/Main.php:245
517
  msgid "Showing 0 to 0 of 0 entries"
518
+ msgstr "Affichant 0 à 0 de 0 saisies"
519
 
520
  #: src/Tribe/Main.php:244
521
  msgid "Showing _START_ to _END_ of _TOTAL_ entries"
522
+ msgstr "Affichant_START_ à _END_ du _TOTAL_ des saisies"
523
 
524
  #: src/Tribe/Main.php:243
525
  msgid "No data available in table"
526
+ msgstr "Aucune donnée disponible sur le tableau"
527
 
528
  #: src/Tribe/Main.php:242
529
  msgid "Show _MENU_ entries"
530
+ msgstr "Afficher les saisies _MENU_"
531
 
532
  #: src/Tribe/Main.php:240
533
  msgid ": activate to sort column descending"
534
+ msgstr ": activer pour trier la colonne descendante"
535
 
536
  #: src/Tribe/Main.php:239
537
  msgid ": activate to sort column ascending"
538
+ msgstr ": activer pour trier la colonne ascendante"
539
 
540
  #: src/Tribe/Main.php:284
541
  msgid "Press \"Cmd + C\" to copy"
542
+ msgstr "Appuyer sur \"Cmd + C\" pour copier"
543
 
544
  #: src/Tribe/Main.php:283
545
  msgid "System info copied"
546
+ msgstr "Infos système copiées"
547
 
548
  #: src/Tribe/Main.php:282 src/admin-views/tribe-options-help.php:50
549
  msgid "Copy to clipboard"
550
+ msgstr "Copier vers le presse-papiers"
551
 
552
  #: src/Tribe/Error.php:38
553
  msgid "An Unknown error occurred"
554
+ msgstr "Une erreur inconnue est survenue"
555
 
556
  #: src/Tribe/Plugins_API.php:116
557
  msgid "The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar."
558
+ msgstr "L'extension Eventbrite Tickets vous permet de créer et de vendre des billets via The Events Calendar en utilisant la puissance de %1$sEventbrite%2$s. Que vous créiez votre billet sur le panneau de contrôle de WordPress ou en important les détails d'un événement déjà existant depuis %1$sEventbrite.com%2$s, cette extension apporte la puissance de l'API Eventbrite à votre calendrier."
559
 
560
  #: src/Tribe/Plugins_API.php:105
561
  msgctxt "Names of required plugins for Community Tickets"
562
  msgid "Event Tickets Plus and Community Events"
563
+ msgstr "Event Tickets Plus et Community Events"
564
 
565
  #: src/Tribe/Plugins_API.php:104
566
  msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
567
+ msgstr "Permettez aux organisateurs sur Community Events de proposer des billets pour leurs événements. Vous pouvez établer des paiements et options de redevances souples. Ils peuvent même faire entrer les participants à leurs événements ! Le tout géré depuis le devant de votre site sans avoir jamais besoin de donner l'accès à votre partie d'administration"
568
 
569
  #: src/Tribe/Plugins_API.php:48
570
  msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
571
+ msgstr "The Events Calendar PRO est une extension payante pour notre plugin open source WordPress %1$sThe Events Calendar%2$s. La version PRO offre quantité de fonctionnalités de calendrier, notamment les événements récurrents, la personnalisation d'attributs d'événements, l'enregistrement de lieux et d'organisateurs, les pages des lieux, l'administration avancée des événements et bien plus."
572
 
573
  #: src/Tribe/Plugins_API.php:84
574
  msgid "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar."
575
+ msgstr "C'est fantastique que votre calendrier soit <em>LE LIEU</em> où être connecté à des manières de premier choix de passer le temps. Vous avez plus d'événements que Jabba le Hutt n'a de plis. Dommage que les visiteurs embauchent un assistant personnel pour consulter tous les choix. Avez-vous jamais souhaité filtrer simplement le calendrier pour qu'il n'affiche que les événements où l'on peut aller à pied, pendant le week-end, qui sont gratuits ? VLAM. Maintenant vous le pouvez. Je vous présente... la Barre de filtrage."
576
 
577
  #: src/Tribe/Admin/Help_Page.php:227 src/Tribe/Plugins_API.php:80
578
  msgid "Filter Bar"
579
+ msgstr "Barre des filtres"
580
 
581
  #: src/Tribe/Credits.php:64
582
  msgid "Rate %1$sEvent Tickets%2$s %3$s"
583
+ msgstr "Evaluer %1$sEvent Tickets%2$s %3$s"
584
 
585
  #: src/Tribe/Credits.php:55
586
  msgid "Rate %1$sThe Events Calendar%2$s %3$s"
587
+ msgstr "Evaluer %1$sThe Events Calendar%2$s %3$s"
588
 
589
  #: src/Tribe/Log/Null_Logger.php:26
590
  msgid "Null logger (will log nothing)"
591
+ msgstr "Enregistreur caduc (n'enregistrera rien)"
592
 
593
  #: src/admin-views/event-log.php:117
594
  msgid "Download log"
595
+ msgstr "Journal de téléchargement"
596
 
597
  #: src/admin-views/event-log.php:100
598
  msgid "The selected log file is empty or has not been generated yet."
599
+ msgstr "Le fichier journal sélectionné est vide ou n'a pas encore été généré."
600
 
601
  #: src/admin-views/event-log.php:43
602
  msgid "Method"
603
+ msgstr "Méthode"
604
 
605
  #: src/admin-views/event-log.php:21
606
  msgid "Logging level"
607
+ msgstr "Niveau de connexion"
608
 
609
  #: src/Tribe/Validate.php:168
610
  msgid "%s must contain numbers, letters, dashes and undescores only"
611
+ msgstr "%s doit contenir uniquement des chiffres, des lettres, des points et des tirets bas"
612
 
613
  #: src/Tribe/Log.php:376
614
  msgid "Full debug (all events)"
615
+ msgstr "Déboguer complètement (tous les événements)"
616
 
617
  #: src/Tribe/Log.php:375
618
  msgid "Warnings and errors"
619
+ msgstr "Avertissements et erreurs"
620
 
621
  #: src/Tribe/Log.php:374
622
  msgid "Only errors"
623
+ msgstr "Erreurs uniquement"
624
 
625
  #: src/Tribe/Log.php:373
626
  msgid "Disabled"
627
+ msgstr "Désactivé"
628
 
629
  #: src/Tribe/Log.php:274
630
  msgid "Cannot set %s as the current logging engine"
631
+ msgstr "Impossible d'installer %s comme le moteur de connexion actuel"
632
 
633
  #: src/Tribe/Log/File_Logger.php:128
634
  msgid "Default (uses temporary files)"
635
+ msgstr "Par défaut (utiliser les fichiers temporaires)"
636
 
637
  #: src/Tribe/Log/Admin.php:148
638
  msgctxt "log engines"
639
  msgid "None currently available"
640
+ msgstr "Aucun actuellement disponible"
641
 
642
  #: src/Tribe/Log/Admin.php:133
643
  msgctxt "log selector"
644
  msgid "None currently available"
645
+ msgstr "Aucun actuellement disponible"
646
 
647
  #: src/admin-views/tribe-options-help.php:52
648
  msgid "Recent Template Changes"
649
+ msgstr "Modifications récentes de modèle"
650
 
651
  #: src/Tribe/Support/Template_Checker_Report.php:115
652
  msgid "Information about recent template changes and potentially impacted template overrides is provided below."
653
+ msgstr "Des informations sur les récentes modifications de modèle et les dérogations de modèle potentiellement touchées sont fournies ci-dessous."
654
 
655
  #: src/Tribe/Support/Template_Checker_Report.php:113
656
  msgid "No notable template changes detected."
657
+ msgstr "Aucune modification notable de modèle détectée."
658
 
659
  #: src/Tribe/Support/Template_Checker_Report.php:97
660
  msgid "based on %s version"
661
+ msgstr "basé sur la version %s"
662
 
663
  #: src/Tribe/Support/Template_Checker_Report.php:96
664
  msgid "version data missing from override"
665
+ msgstr "données de version manquantes à la dérogation"
666
 
667
  #: src/Tribe/Support/Template_Checker_Report.php:92
668
  msgid "Existing theme overrides that may need revision:"
669
+ msgstr "Dérogations existantes de thème pouvant nécessiter une révision :"
670
 
671
  #: src/Tribe/Support/Template_Checker_Report.php:82
672
  msgid "Templates introduced or updated with this release (%s):"
673
+ msgstr "Modèles introduits ou mis à jour avec cette version (%s):"
674
 
675
  #: src/Tribe/Support/Template_Checker_Report.php:78
676
  msgid "No notable changes detected"
677
+ msgstr "Aucun changement notable détecté"
678
 
679
  #. Description of the plugin/theme
680
  msgid "An event settings framework for managing shared options"
681
+ msgstr "Un cadre de paramètres d'événement pour gérer les options partagées"
682
 
683
  #. Plugin Name of the plugin/theme
684
  msgid "Tribe Common"
685
+ msgstr "Tribe Common"
686
 
687
  #: src/admin-views/tribe-options-licenses.php:47
688
  msgid "Only license fields for %1$snetwork activated%2$s plugins will be listed on this screen. "
689
+ msgstr "Seuls les champs de licence pour des plugins %1$sactivés sur le réseau%2$s seront listés sur cet écran. "
690
 
691
  #: src/admin-views/tribe-options-help.php:38
692
  msgid "Read more about our support policy"
693
+ msgstr "Lisez en plus au sujet de notre politique d'assistance"
694
 
695
  #: src/admin-views/tribe-options-help.php:30
696
  msgid "Please note that all hands-on support is provided via the forums. You can email or tweet at us… ​but we will probably point you back to the forums "
698
 
699
  #: src/admin-views/tribe-options-help.php:33
700
  msgid "%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the help desk is open only to paid customers, they are open for anyone to search and review."
701
+ msgstr "%s. Il y a très peu de problèmes que nous n'avons vu et il y a des chances qu'un autre utilisateur ait déjà posé votre question et reçu une réponse de notre personnel d'assistance. Si publier sur le bureau d'assistance est uniquement possible pour les clients payants, le bureau est ouvert à tous pour des recherches et examens."
702
 
703
  #: src/admin-views/tribe-options-help.php:32
704
  msgid "Test for a theme or plugin conflict"
705
+ msgstr "Test pour un conflit de thèmes ou plugins"
706
 
707
  #: src/admin-views/tribe-options-help.php:32
708
  msgid "%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful."
709
+ msgstr "%s. Tester un conflit existant est le meilleur départ pour une recherche de panne en profondeur. Nous vous demanderons souvent de suivre ces étapes lors de l'ouverture d'un nouveau fil de sujet, aussi le faire à l'avance sera super utile."
710
 
711
  #: src/admin-views/tribe-options-help.php:31
712
  msgid "Check our Knowledgebase"
713
+ msgstr "Consultez notre base de connaissances"
714
 
715
  #: src/admin-views/tribe-options-help.php:31
716
  msgid "%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!"
717
+ msgstr "%s. L'ensemble des réponses communes (et pas si communes) aux questions que nous voyons se trouvent ici. C'est souvent la voie la plus rapide pour trouver une réponse !"
718
 
719
  #: src/admin-views/tribe-options-help.php:27
720
  msgid "While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:"
721
+ msgstr "Si les ressources ci-dessus aident à résoudre la majorité des problèmes que nous voyons, il y a des fois où il vous faut une assistance supplémentaire. Si vous avez besoin d'aide pour l'utilisation de nos plugins et que vous souhaitez que nous examinions votre cas, veuillez suivre ces étapes :"
722
 
723
  #: src/admin-views/tribe-options-help.php:26
724
  msgid "Getting More Help"
725
+ msgstr "Recevoir plus d'aide"
726
 
727
  #: src/admin-views/tribe-options-help.php:21
728
  msgid "list of available functions"
729
+ msgstr "liste des fonctionnalités disponibles"
730
 
731
  #: src/admin-views/tribe-options-help.php:15
732
  msgid "Knowledgebase"
733
+ msgstr "Base de connaissances"
734
 
735
  #: src/admin-views/tribe-options-help.php:15
736
  msgid "Our website’s %s is a great place to find tips and tricks for using and customizing our plugins."
737
+ msgstr "Le %s de notre site Web est un excellent endroit où trouver des conseils et des astuces pour utiliser et personnaliser nos plugins."
738
 
739
  #: src/admin-views/tribe-options-help.php:14
740
  msgid "Getting Support"
741
+ msgstr "Obtenir de l'aide"
742
 
743
  #: src/admin-views/tribe-options-help.php:11
744
  msgid "Thank you for using %s! All of us at Modern Tribe sincerely appreciate your support and we’re excited to see you using our plugins."
745
+ msgstr "Merci d'utiliser %s ! Nous apprécions tous sincèrement votre soutien à Modern Tribe et nous sommes ravis de vous voir utiliser nos plugins."
746
 
747
  #: src/admin-views/tribe-options-general.php:15
748
  msgid "Optimize your site's event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s."
749
+ msgstr "Optimisez les annonces d'événements de votre site avec %1$sThe Events Calendar%2$s, notre plugin de calendrier gratuit. Vous cherchez des fonctionnalités supplémentaires, notamment les événements récurrents, l'envoi par les utilisateurs, les ventes de billets avancées et autres ? Consultez nos %3$sextensions premium%4$s."
750
 
751
  #: src/admin-views/tribe-options-general.php:10
752
  msgid "Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we're excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started."
753
+ msgstr "Merci d'utiliser Event Tickets ! Nous apprécions tous sincèrement votre soutien à Modern Tribe et nous sommes ravis de vous voir utiliser nos plugins. Jetez un coup d’œil sur notre %1$sNew User Primer%2$s pratique pour commencer."
754
 
755
  #: src/Tribe/Validate.php:214
756
  msgid "%s must be a positive number or percent."
757
+ msgstr "%s doit être un nombre positif ou un pourcentage."
758
 
759
  #: src/Tribe/PUE/Checker.php:940
760
  msgid "Thanks for setting up a valid key. It will expire on %s"
761
+ msgstr "Merci d'avoir installé une clé valide. Elle expirera le %s"
762
 
763
  #: src/Tribe/Admin/Help_Page.php:860
764
  msgid "Visit the Add-on Page"
765
+ msgstr "Visitez la Page d'extensions"
766
 
767
  #: src/Tribe/Admin/Help_Page.php:855
768
  msgid "Plugin Inactive"
769
+ msgstr "Plugin inactif"
770
 
771
  #: src/Tribe/Admin/Help_Page.php:853
772
  msgid "Plugin Active"
773
+ msgstr "Plugin actif"
774
 
775
  #: src/Tribe/Admin/Help_Page.php:828
776
  msgid "Rating:"
777
+ msgstr "Note :"
778
 
779
  #: src/Tribe/Admin/Help_Page.php:825
780
  msgid "Active Users:"
781
+ msgstr "Utilisateurs actifs :"
782
 
783
  #: src/Tribe/Admin/Help_Page.php:802
784
  msgid "Install Plugin"
785
+ msgstr "Installer le plugin"
786
 
787
  #: src/Tribe/Admin/Help_Page.php:802
788
  msgid "Install %s"
789
+ msgstr "Installer %s"
790
 
791
  #: src/Tribe/Admin/Help_Page.php:786
792
  msgid "Upgrade Plugin"
793
+ msgstr "Mettre à jour le plugin"
794
 
795
  #: src/Tribe/Admin/Help_Page.php:778
796
  msgid "Activate Plugin"
797
+ msgstr "Activer le plugin"
798
 
799
  #: src/Tribe/Admin/Help_Page.php:778
800
  msgid "Activate %s"
801
+ msgstr "Activer %s"
802
 
803
  #: src/Tribe/Admin/Help_Page.php:244 src/Tribe/Plugins_API.php:100
804
  msgid "Community Tickets"
805
+ msgstr "Community Tickets"
806
 
807
  #: src/Tribe/Admin/Help_Page.php:235 src/Tribe/Plugins_API.php:66
808
  msgid "Event Tickets Plus"
809
+ msgstr "Event Tickets Plus"
810
 
811
  #: src/Tribe/Admin/Help_Page.php:203 src/Tribe/Plugins_API.php:111
812
  msgid "Eventbrite Tickets"
813
+ msgstr "Eventbrite Tickets"
814
 
815
  #: src/Tribe/Admin/Help_Page.php:170
816
  msgid " and "
817
+ msgstr " et "
818
 
819
  #: src/Tribe/Admin/Help_Page.php:95
820
  msgid "Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes."
821
+ msgstr "Donnez un coup de fouet à vos publications d'admin pour tout type de message personnalisé avec des filtres et colonnes classables, et l'enregistrement automatique des méta-cases."
822
 
823
  #: src/Tribe/Admin/Help_Page.php:91
824
  msgid "Advanced Post Manager"
825
+ msgstr "Gestionnaire d'articles avancé"
826
 
827
  #: src/Tribe/Admin/Help_Page.php:79
828
  msgid "Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events."
829
+ msgstr "Events Tickets est un plugin extensible fabriqué avec soin, vous permettant de vendre facilement des billets pour vos événements."
830
 
831
  #: src/Tribe/Admin/Help_Page.php:75 src/Tribe/Plugins_API.php:57
832
  msgid "Event Tickets"
833
+ msgstr "Event Tickets"
834
 
835
  #: src/Tribe/Admin/Help_Page.php:63
836
  msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events."
837
+ msgstr "The Events Calendar est un plugin extensible conçu avec soin, vous permettant de partager facilement vos événements."
838
 
839
  #. Author URI of the plugin/theme
840
  msgid "http://m.tri.be/1x"
841
+ msgstr "http://m.tri.be/1x"
842
 
843
  #. Author of the plugin/theme
844
  msgid "Modern Tribe, Inc."
845
+ msgstr "Modern Tribe, Inc."
846
 
847
  #: src/Tribe/Settings.php:371
848
  msgid "Save Changes"
849
+ msgstr "Sauvegarder les modifications"
850
 
851
  #: src/admin-views/tribe-options-licenses.php:38
852
  msgid "%1$s Using our plugins in a multisite network? %2$s Please note that your license key will be applied to the entire network, not just this site."
853
+ msgstr "%1$s Vous utilisez nos plugins sur un réseau à plusieurs sites ? %2$s Veuillez noter que votre clé de licence sera appliquée à l'ensemble du réseau, et pas uniquement à ce site."
854
 
855
  #: src/Tribe/Support.php:199
856
  msgid "Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!"
857
+ msgstr "Les règles de réécriture (Rewrite) ont été purgées lors du chargement de cette page d'aide. Il y a probablement un vidage des règles de Rewrite provoqué par une extension ou un thème."
858
 
859
  #: src/Tribe/PUE/Checker.php:909
860
  msgid "unknown date"
861
+ msgstr "date inconnue"
862
 
863
  #: src/Tribe/Admin/Activation_Page.php:92
864
  msgid "Return to WordPress Updates"
865
+ msgstr "Retourner à la page des mises à jour WordPress"
866
 
867
  #: src/Tribe/Admin/Activation_Page.php:92
868
  msgid "Go to WordPress Updates page"
869
+ msgstr "Aller à la page des mises à jour de WordPress"
870
 
871
  #: src/Tribe/Admin/Activation_Page.php:84
872
  msgid "Return to Plugins page"
873
+ msgstr "Retourner à la page des extensions"
874
 
875
  #: src/Tribe/Admin/Activation_Page.php:84
876
  msgid "Go to plugins page"
877
+ msgstr "Aller à la page des extensions"
878
 
879
  #: src/Tribe/Cost_Utils.php:114
880
  msgid "Free"
882
 
883
  #: src/admin-views/tribe-options-network.php:27
884
  msgid "Hide the following settings tabs on every site:"
885
+ msgstr "Masquer les onglets de réglages suivants sur chaque site :"
886
 
887
  #: src/admin-views/tribe-options-network.php:19
888
  msgid "This is where all of the global network settings for Modern Tribe's The Events Calendar can be modified."
889
+ msgstr "C'est ici que tous les réglages généraux de l'extension The Events Calendar de Modern Tribe peuvent être modifiés."
890
 
891
  #: src/admin-views/tribe-options-network.php:15
892
  msgid "Network Settings"
893
+ msgstr "Réglages du réseau"
894
 
895
  #: src/admin-views/tribe-options-help.php:74
896
  msgid "News and Tutorials"
897
+ msgstr "Actu et tutoriels"
898
 
899
  #: src/Tribe/Admin/Help_Page.php:847
900
  msgid "Premium Add-Ons"
901
+ msgstr "Modules Premium"
902
 
903
  #: src/Tribe/Admin/Help_Page.php:823
904
  msgid "WordPress "
905
+ msgstr "WordPress "
906
 
907
  #: src/Tribe/Admin/Help_Page.php:822 src/admin-views/app-shop.php:77
908
  msgid "Requires:"
909
+ msgstr "Requiert :"
910
 
911
  #: src/Tribe/Admin/Help_Page.php:819
912
  msgid "Latest Version:"
913
+ msgstr "Dernière version :"
914
 
915
  #: src/admin-views/tribe-options-help.php:80
916
  msgid "More..."
917
+ msgstr "Plus..."
918
 
919
  #: src/Tribe/Admin/Help_Page.php:194 src/Tribe/Plugins_API.php:43
920
  msgid "Events Calendar PRO"
921
+ msgstr "The Events Calendar PRO"
922
 
923
  #: src/Tribe/Admin/Help_Page.php:413 src/Tribe/Admin/Help_Page.php:788
924
  msgid "You are up to date!"
925
+ msgstr "Vous avez la dernière version !"
926
 
927
  #: src/Tribe/Admin/Help_Page.php:413
928
  msgid "You need to upgrade!"
929
+ msgstr "Vous devez mettre à jour !"
930
 
931
  #: src/Tribe/Admin/Help_Page.php:405
932
  msgctxt "not available"
933
  msgid "n/a"
934
+ msgstr "nd"
935
 
936
  #: src/admin-views/tribe-options-general.php:59
937
  msgid "Debug Bar Plugin"
938
+ msgstr "Plugin Debug Bar"
939
 
940
  #: src/admin-views/tribe-options-general.php:59
941
  msgid "Enable this option to log debug information. By default this will log to your server PHP error log. If you'd like to see the log messages in your browser, then we recommend that you install the %s and look for the \"Tribe\" tab in the debug output."
942
+ msgstr "Activer cette option pour enregistrer les informations de débogage. Par défauts les informations seront enregistrés sur le ficher d'enregistrement de votre serveur PHP (Error Log). Si vous souhaitez voir les messages du journal sur votre navigateur, nous vous recommandons d'installer %s et de rechercher l'onglet \"Tribe\" dans la sortie de débogage."
943
 
944
  #: src/admin-views/tribe-options-general.php:53
945
  msgid "Debug mode"
947
 
948
  #: src/admin-views/tribe-options-general.php:35
949
  msgid "Show The Events Calendar link"
950
+ msgstr "Afficher le lien de The Event Calendar"
951
 
952
  #: src/admin-views/tribe-options-general.php:30
953
  msgid "See an example of the link"
954
+ msgstr "Voir un exemple de lien"
955
 
956
  #: src/admin-views/tribe-options-general.php:30
957
  msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project."
958
+ msgstr "Pensez-vous que \" Waouh ! Ce plugin est génial ! Je devrais remercier Modern Tribe pour tous leurs efforts\". Le meilleur des remerciements que nous souhaitons est de la reconnaissance. Ajoutez un petit lien en bas de votre calendrier qui redirige sur le site du projet Events Calendar."
959
 
960
  #: src/admin-views/tribe-options-general.php:25
961
  msgid "We hope our plugin is helping you out."
962
+ msgstr "Nous espérons que notre plugin vous est utile."
963
 
964
  #: src/admin-views/tribe-options-general.php:20
965
  msgid "Check out the available add-ons"
966
+ msgstr "Consultez les modules disponibles"
967
 
968
  #: src/admin-views/tribe-options-general.php:20
969
  msgid "Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?"
970
+ msgstr "Vous cherchez d'autres fonctionnalités comme les événements récurrents, les méta-données personnalisées, les événements communautaires, la vente de billets et plus encore ?"
971
 
972
  #: src/admin-views/tribe-options-display.php:37
973
  msgid "Select the date format to use in datepickers"
974
+ msgstr "Sélectionnez le format de date à utiliser dans le sélecteur de date"
975
 
976
  #: src/admin-views/tribe-options-display.php:36
977
  msgid "Datepicker Date Format"
979
 
980
  #: src/admin-views/tribe-options-display.php:22
981
  msgid "Date Format Settings"
982
+ msgstr "Paramètres de format de date"
983
 
984
  #: src/admin-views/event-log.php:65
985
  msgid "View"
986
+ msgstr "Afficher"
987
 
988
  #: src/Tribe/Admin/Help_Page.php:211 src/Tribe/Plugins_API.php:90
989
  msgid "Community Events"
990
+ msgstr "Événements de la communauté"
991
 
992
  #: src/Tribe/Languages/Locations.php:374
993
  msgid "Wyoming"
999
 
1000
  #: src/Tribe/Languages/Locations.php:372
1001
  msgid "West Virginia"
1002
+ msgstr "West Virginia"
1003
 
1004
  #: src/Tribe/Languages/Locations.php:371
1005
  msgid "Washington"
1083
 
1084
  #: src/Tribe/Languages/Locations.php:351
1085
  msgid "Nebraska"
1086
+ msgstr "Nebraska"
1087
 
1088
  #: src/Tribe/Languages/Locations.php:350
1089
  msgid "Montana"
1147
 
1148
  #: src/Tribe/Languages/Locations.php:335
1149
  msgid "Hawaii"
1150
+ msgstr "Hawaii"
1151
 
1152
  #: src/Tribe/Languages/Locations.php:333
1153
  msgid "Florida"
1207
 
1208
  #: src/Tribe/Languages/Locations.php:293
1209
  msgid "Wallis and Futuna Islands"
1210
+ msgstr "Iles de Wallis et Futuna"
1211
 
1212
  #: src/Tribe/Languages/Locations.php:292
1213
  msgid "Virgin Islands (U.S.)"
1214
+ msgstr "Virgin Islands (U.S.)"
1215
 
1216
  #: src/Tribe/Languages/Locations.php:291
1217
  msgid "Virgin Islands (British)"
1218
+ msgstr "Virgin Islands (British)"
1219
 
1220
  #: src/Tribe/Languages/Locations.php:290
1221
  msgid "Viet Nam"
1222
+ msgstr "Vietnam"
1223
 
1224
  #: src/Tribe/Languages/Locations.php:289
1225
  msgid "Venezuela"
1226
+ msgstr "Venezuela"
1227
 
1228
  #: src/Tribe/Languages/Locations.php:288
1229
  msgid "Vanuatu"
1231
 
1232
  #: src/Tribe/Languages/Locations.php:287
1233
  msgid "Uzbekistan"
1234
+ msgstr "Ouzbékistan"
1235
 
1236
  #: src/Tribe/Languages/Locations.php:286
1237
  msgid "Uruguay"
1247
 
1248
  #: src/Tribe/Languages/Locations.php:283
1249
  msgid "United Arab Emirates"
1250
+ msgstr "Émirats arabes unis"
1251
 
1252
  #: src/Tribe/Languages/Locations.php:282
1253
  msgid "Ukraine"
1263
 
1264
  #: src/Tribe/Languages/Locations.php:279
1265
  msgid "Turks and Caicos Islands"
1266
+ msgstr "Îles Turques-et-Caïques"
1267
 
1268
  #: src/Tribe/Languages/Locations.php:278
1269
  msgid "Turkmenistan"
1279
 
1280
  #: src/Tribe/Languages/Locations.php:275
1281
  msgid "Trinidad and Tobago"
1282
+ msgstr "Trinidad et Tobago"
1283
 
1284
  #: src/Tribe/Languages/Locations.php:274
1285
  msgid "Tonga"
1287
 
1288
  #: src/Tribe/Languages/Locations.php:273
1289
  msgid "Tokelau"
1290
+ msgstr "Tokelau"
1291
 
1292
  #: src/Tribe/Languages/Locations.php:272
1293
  msgid "Togo"
1299
 
1300
  #: src/Tribe/Languages/Locations.php:270
1301
  msgid "Tanzania, United Republic of"
1302
+ msgstr "Tanzanie, République unie de"
1303
 
1304
  #: src/Tribe/Languages/Locations.php:269
1305
  msgid "Tajikistan"
1306
+ msgstr "Tadjikistan"
1307
 
1308
  #: src/Tribe/Languages/Locations.php:268
1309
  msgid "Taiwan"
1327
 
1328
  #: src/Tribe/Languages/Locations.php:263
1329
  msgid "Svalbard and Jan Mayen Islands"
1330
+ msgstr "Svalbard et Jan Mayen"
1331
 
1332
  #: src/Tribe/Languages/Locations.php:262
1333
  msgid "Suriname"
1339
 
1340
  #: src/Tribe/Languages/Locations.php:241
1341
  msgid "Saint Pierre and Miquelon"
1342
+ msgstr "Saint-Pierre-et-Miquelon"
1343
 
1344
  #: src/Tribe/Languages/Locations.php:260
1345
  msgid "Sri Lanka"
1351
 
1352
  #: src/Tribe/Languages/Locations.php:258
1353
  msgid "South Georgia, South Sandwich Islands"
1354
+ msgstr "South Georgia, South Sandwich Islands"
1355
 
1356
  #: src/Tribe/Languages/Locations.php:257
1357
  msgid "South Africa"
1358
+ msgstr "Afrique du Sud"
1359
 
1360
  #: src/Tribe/Languages/Locations.php:256
1361
  msgid "Somalia"
1363
 
1364
  #: src/Tribe/Languages/Locations.php:255
1365
  msgid "Solomon Islands"
1366
+ msgstr "Salomon, Îles"
1367
 
1368
  #: src/Tribe/Languages/Locations.php:254
1369
  msgid "Slovenia"
1371
 
1372
  #: src/Tribe/Languages/Locations.php:253
1373
  msgid "Slovakia (Slovak Republic)"
1374
+ msgstr "Slovaquie (République Slovaque)"
1375
 
1376
  #: src/Tribe/Languages/Locations.php:251
1377
  msgid "Singapore"
1399
 
1400
  #: src/Tribe/Languages/Locations.php:244
1401
  msgid "San Marino"
1402
+ msgstr "Saint-Marin"
1403
 
1404
  #: src/Tribe/Languages/Locations.php:243
1405
  msgid "Samoa"
1407
 
1408
  #: src/Tribe/Languages/Locations.php:242
1409
  msgid "Saint Vincent and The Grenadines"
1410
+ msgstr "Saint-Vincent-et-les-Grenadines"
1411
 
1412
  #: src/Tribe/Languages/Locations.php:240
1413
  msgid "Saint Lucia"
1414
+ msgstr "Sainte Lucie"
1415
 
1416
  #: src/Tribe/Languages/Locations.php:239
1417
  msgid "Saint Kitts and Nevis"
1418
+ msgstr "Saint-Christophe-et-Niévès"
1419
 
1420
  #: src/Tribe/Languages/Locations.php:236
1421
  msgid "Rwanda"
1423
 
1424
  #: src/Tribe/Languages/Locations.php:235
1425
  msgid "Russian Federation"
1426
+ msgstr "Russie, Fédération de"
1427
 
1428
  #: src/Tribe/Languages/Locations.php:234
1429
  msgid "Romania"
1439
 
1440
  #: src/Tribe/Languages/Locations.php:231
1441
  msgid "Puerto Rico"
1442
+ msgstr "Puerto Rico"
1443
 
1444
  #: src/Tribe/Languages/Locations.php:230
1445
  msgid "Portugal"
1451
 
1452
  #: src/Tribe/Languages/Locations.php:228
1453
  msgid "Pitcairn"
1454
+ msgstr "Pitcairn"
1455
 
1456
  #: src/Tribe/Languages/Locations.php:227
1457
  msgid "Philippines"
1467
 
1468
  #: src/Tribe/Languages/Locations.php:224
1469
  msgid "Papua New Guinea"
1470
+ msgstr "Papouasie Nouvelle Guinée"
1471
 
1472
  #: src/Tribe/Languages/Locations.php:223
1473
  msgid "Panama"
1475
 
1476
  #: src/Tribe/Languages/Locations.php:222
1477
  msgid "Palau"
1478
+ msgstr "Palau"
1479
 
1480
  #: src/Tribe/Languages/Locations.php:221
1481
  msgid "Pakistan"
1491
 
1492
  #: src/Tribe/Languages/Locations.php:218
1493
  msgid "Northern Mariana Islands"
1494
+ msgstr "Mariannes du Nord, Îles"
1495
 
1496
  #: src/Tribe/Languages/Locations.php:217
1497
  msgid "Norfolk Island"
1498
+ msgstr "Norfolk Island"
1499
 
1500
  #: src/Tribe/Languages/Locations.php:216
1501
  msgid "Niue"
1503
 
1504
  #: src/Tribe/Languages/Locations.php:215
1505
  msgid "Nigeria"
1506
+ msgstr "Nigeria"
1507
 
1508
  #: src/Tribe/Languages/Locations.php:214
1509
  msgid "Niger"
1515
 
1516
  #: src/Tribe/Languages/Locations.php:212
1517
  msgid "New Zealand"
1518
+ msgstr "Nouvelle Zélande"
1519
 
1520
  #: src/Tribe/Languages/Locations.php:211
1521
  msgid "New Caledonia"
1522
+ msgstr "Nouvelle Calédonie"
1523
 
1524
  #: src/Tribe/Languages/Locations.php:210
1525
  msgid "Netherlands"
1527
 
1528
  #: src/Tribe/Languages/Locations.php:209
1529
  msgid "Nepal"
1530
+ msgstr "Népal"
1531
 
1532
  #: src/Tribe/Languages/Locations.php:208
1533
  msgid "Nauru"
1547
 
1548
  #: src/Tribe/Languages/Locations.php:204
1549
  msgid "Morocco"
1550
+ msgstr "Morocco"
1551
 
1552
  #: src/Tribe/Languages/Locations.php:203
1553
  msgid "Montserrat"
1555
 
1556
  #: src/Tribe/Languages/Locations.php:202
1557
  msgid "Montenegro"
1558
+ msgstr "Monténégro"
1559
 
1560
  #: src/Tribe/Languages/Locations.php:201
1561
  msgid "Mongolia"
1567
 
1568
  #: src/Tribe/Languages/Locations.php:199
1569
  msgid "Moldova, Republic of"
1570
+ msgstr "Moldavie, République de"
1571
 
1572
  #: src/Tribe/Languages/Locations.php:198
1573
  msgid "Micronesia, Federated States of"
1574
+ msgstr "Micronésie, Etats fédérés de"
1575
 
1576
  #: src/Tribe/Languages/Locations.php:197
1577
  msgid "Mexico"
1583
 
1584
  #: src/Tribe/Languages/Locations.php:195
1585
  msgid "Mauritius"
1586
+ msgstr "Maurice, Île"
1587
 
1588
  #: src/Tribe/Languages/Locations.php:194
1589
  msgid "Mauritania"
1595
 
1596
  #: src/Tribe/Languages/Locations.php:192
1597
  msgid "Marshall Islands"
1598
+ msgstr "Marshall, Îles"
1599
 
1600
  #: src/Tribe/Languages/Locations.php:191
1601
  msgid "Malta"
1602
+ msgstr "Malta"
1603
 
1604
  #: src/Tribe/Languages/Locations.php:190
1605
  msgid "Mali"
1611
 
1612
  #: src/Tribe/Languages/Locations.php:188
1613
  msgid "Malaysia"
1614
+ msgstr "Malaysia"
1615
 
1616
  #: src/Tribe/Languages/Locations.php:187
1617
  msgid "Malawi"
1643
 
1644
  #: src/Tribe/Languages/Locations.php:180
1645
  msgid "Libya"
1646
+ msgstr "Libye"
1647
 
1648
  #: src/Tribe/Languages/Locations.php:179
1649
  msgid "Liberia"
1663
 
1664
  #: src/Tribe/Languages/Locations.php:175
1665
  msgid "Lao People's Democratic Republic"
1666
+ msgstr "Laos, République démocratique populaire"
1667
 
1668
  #: src/Tribe/Languages/Locations.php:174
1669
  msgid "Kyrgyzstan"
1670
+ msgstr "Kirghizstan"
1671
 
1672
  #: src/Tribe/Languages/Locations.php:173
1673
  msgid "Kuwait"
1675
 
1676
  #: src/Tribe/Languages/Locations.php:172
1677
  msgid "Korea, Republic of"
1678
+ msgstr "Corée, République de"
1679
 
1680
  #: src/Tribe/Languages/Locations.php:171
1681
  msgid "Korea, Democratic People's Republic of"
1682
+ msgstr "Corée, République populaire démocratique de"
1683
 
1684
  #: src/Tribe/Languages/Locations.php:170
1685
  msgid "Kiribati"
1723
 
1724
  #: src/Tribe/Languages/Locations.php:160
1725
  msgid "Iran, Islamic Republic of"
1726
+ msgstr "Iran, République islamique d'"
1727
 
1728
  #: src/Tribe/Languages/Locations.php:159
1729
  msgid "Indonesia"
1751
 
1752
  #: src/Tribe/Languages/Locations.php:153
1753
  msgid "Holy See (Vatican City State)"
1754
+ msgstr "Saint Siège (État du Vatican)"
1755
 
1756
  #: src/Tribe/Languages/Locations.php:152
1757
  msgid "Heard and McDonald Islands"
1758
+ msgstr "Îles Heard-et-MacDonald"
1759
 
1760
  #: src/Tribe/Languages/Locations.php:151
1761
  msgid "Haiti"
1763
 
1764
  #: src/Tribe/Languages/Locations.php:150
1765
  msgid "Guyana"
1766
+ msgstr "Guyana"
1767
 
1768
  #: src/Tribe/Languages/Locations.php:149
1769
  msgid "Guinea-Bissau"
1811
 
1812
  #: src/Tribe/Languages/Locations.php:138 src/Tribe/Languages/Locations.php:334
1813
  msgid "Georgia"
1814
+ msgstr "Géorgie"
1815
 
1816
  #: src/Tribe/Languages/Locations.php:137
1817
  msgid "Gambia"
1823
 
1824
  #: src/Tribe/Languages/Locations.php:135
1825
  msgid "French Southern Territories"
1826
+ msgstr "Territoires d'Outre-Mer"
1827
 
1828
  #: src/Tribe/Languages/Locations.php:134
1829
  msgid "French Polynesia"
1843
 
1844
  #: src/Tribe/Languages/Locations.php:130
1845
  msgid "Fiji"
1846
+ msgstr "Fidji"
1847
 
1848
  #: src/Tribe/Languages/Locations.php:129
1849
  msgid "Faroe Islands"
1850
+ msgstr "Féroé, Îles"
1851
 
1852
  #: src/Tribe/Languages/Locations.php:128
1853
  msgid "Falkland Islands (Malvinas)"
1854
+ msgstr "Falkland (Iles Malouines)"
1855
 
1856
  #: src/Tribe/Languages/Locations.php:127
1857
  msgid "Ethiopia"
1871
 
1872
  #: src/Tribe/Languages/Locations.php:123
1873
  msgid "El Salvador"
1874
+ msgstr "El Salvador"
1875
 
1876
  #: src/Tribe/Languages/Locations.php:122
1877
  msgid "Egypt"
1883
 
1884
  #: src/Tribe/Languages/Locations.php:120
1885
  msgid "East Timor"
1886
+ msgstr "Timor oriental"
1887
 
1888
  #: src/Tribe/Languages/Locations.php:119
1889
  msgid "Dominican Republic"
1890
+ msgstr "Répubilque dominicaine"
1891
 
1892
  #: src/Tribe/Languages/Locations.php:118
1893
  msgid "Dominica"
1915
 
1916
  #: src/Tribe/Languages/Locations.php:111
1917
  msgid "Croatia (Local Name: Hrvatska)"
1918
+ msgstr "Croatie (Nom local : Hrvatska)"
1919
 
1920
  #: src/Tribe/Languages/Locations.php:109
1921
  msgid "Costa Rica"
1923
 
1924
  #: src/Tribe/Languages/Locations.php:108
1925
  msgid "Cook Islands"
1926
+ msgstr "Cook Islands"
1927
 
1928
  #: src/Tribe/Languages/Locations.php:107
1929
  msgid "Congo, Democratic Republic of the"
1930
+ msgstr "Congo, République démocratique du"
1931
 
1932
  #: src/Tribe/Languages/Locations.php:106
1933
  msgid "Congo"
1943
 
1944
  #: src/Tribe/Languages/Locations.php:102
1945
  msgid "Cocos (Keeling) Islands"
1946
+ msgstr "Cocos (Keeling) Islands"
1947
 
1948
  #: src/Tribe/Languages/Locations.php:101
1949
  msgid "Christmas Island"
1950
+ msgstr "Île Christmas"
1951
 
1952
  #: src/Tribe/Languages/Locations.php:100
1953
  msgid "China"
1971
 
1972
  #: src/Tribe/Languages/Locations.php:95
1973
  msgid "Cape Verde"
1974
+ msgstr "Cap vert"
1975
 
1976
  #: src/Tribe/Languages/Locations.php:94
1977
  msgid "Canada"
1999
 
2000
  #: src/Tribe/Languages/Locations.php:88
2001
  msgid "Brunei Darussalam"
2002
+ msgstr "Brunei Darussalam"
2003
 
2004
  #: src/Tribe/Languages/Locations.php:87
2005
  msgid "British Indian Ocean Territory"
2006
+ msgstr "Territoire britannique de l'Océan indien"
2007
 
2008
  #: src/Tribe/Languages/Locations.php:86
2009
  msgid "Brazil"
2019
 
2020
  #: src/Tribe/Languages/Locations.php:83
2021
  msgid "Bosnia and Herzegovina"
2022
+ msgstr "Bosnie-Herzégovine"
2023
 
2024
  #: src/Tribe/Languages/Locations.php:82
2025
  msgid "Bolivia"
2047
 
2048
  #: src/Tribe/Languages/Locations.php:76
2049
  msgid "Belarus"
2050
+ msgstr "Bélarus"
2051
 
2052
  #: src/Tribe/Languages/Locations.php:75
2053
  msgid "Barbados"
2059
 
2060
  #: src/Tribe/Languages/Locations.php:73
2061
  msgid "Bahrain"
2062
+ msgstr "Bahrain"
2063
 
2064
  #: src/Tribe/Languages/Locations.php:72
2065
  msgid "Bahamas"
2067
 
2068
  #: src/Tribe/Languages/Locations.php:71
2069
  msgid "Azerbaijan"
2070
+ msgstr "Azerbaïdjan"
2071
 
2072
  #: src/Tribe/Languages/Locations.php:70
2073
  msgid "Austria"
2075
 
2076
  #: src/Tribe/Languages/Locations.php:69
2077
  msgid "Australia"
2078
+ msgstr "Australia"
2079
 
2080
  #: src/Tribe/Languages/Locations.php:68
2081
  msgid "Aruba"
2087
 
2088
  #: src/Tribe/Languages/Locations.php:66
2089
  msgid "Argentina"
2090
+ msgstr "Argentina"
2091
 
2092
  #: src/Tribe/Languages/Locations.php:65
2093
  msgid "Antigua and Barbuda"
2094
+ msgstr "Antigua-et-Barbuda"
2095
 
2096
  #: src/Tribe/Languages/Locations.php:64
2097
  msgid "Antarctica"
2107
 
2108
  #: src/Tribe/Languages/Locations.php:61
2109
  msgid "Andorra"
2110
+ msgstr "Andorra"
2111
 
2112
  #: src/Tribe/Languages/Locations.php:60
2113
  msgid "American Samoa"
2114
+ msgstr "Samoa américaines"
2115
 
2116
  #: src/Tribe/Languages/Locations.php:59
2117
  msgid "Algeria"
2131
 
2132
  #: src/Tribe/Validate.php:514
2133
  msgid "Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom."
2134
+ msgstr "La liste de pays doit être formatée avec un pays par ligne et avec le format suivant: <br>FR, France <br> UK, United Kingdom."
2135
 
2136
  #: src/Tribe/Validate.php:498
2137
  msgid "%s must be a phone number."
2139
 
2140
  #: src/Tribe/Validate.php:484
2141
  msgid "%s must consist of 5 numbers."
2142
+ msgstr "%s doit comprendre au moins 5 chiffres."
2143
 
2144
  #: src/Tribe/Validate.php:470
2145
  msgid "%s must consist of letters, spaces, apostrophes, and dashes."
2146
+ msgstr "%s doit comporter des lettres, espaces, apostrophes et tirets."
2147
 
2148
  #: src/Tribe/Validate.php:454
2149
  msgid "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
2150
+ msgstr "%s doit contenir seulement des lettres, nombres, tirets, apostrophes et espaces."
2151
 
2152
  #: src/Tribe/Validate.php:438
2153
  msgid "%s must be a number between 0 and 21."
2154
+ msgstr "%s doit être un nombre entre 0 et 21."
2155
 
2156
  #: src/Tribe/Validate.php:384
2157
  msgid "%s must be a number or percentage."
2158
+ msgstr "%s doit être un nombre ou un pourcentage."
2159
 
2160
  #: src/Tribe/Validate.php:368
2161
  msgid "%s cannot be a duplicate"
2162
+ msgstr "%s ne doit pas être en double"
2163
 
2164
  #: src/Tribe/Validate.php:366
2165
  msgid "%s cannot be the same as %s."
2166
+ msgstr "%s ne peut être identique à %s."
2167
 
2168
  #: src/Tribe/Validate.php:359
2169
  msgid "Comparison validation failed because no comparison value was provided, for field %s"
2170
+ msgstr "Échec de validation de la comparaison : aucune valeur de comparaison fournie pour le champ %s"
2171
 
2172
  #: src/Tribe/Validate.php:298 src/Tribe/Validate.php:310
2173
  #: src/Tribe/Validate.php:323 src/Tribe/Validate.php:345
2174
  msgid "%s must have a value that's part of its options."
2175
+ msgstr "%s doit être une valeur qui fait parti de ses options."
2176
 
2177
  #: src/Tribe/Validate.php:282
2178
  msgid "%s must be a valid absolute URL."
2179
+ msgstr "%s doit être une URL absolue valide."
2180
 
2181
  #: src/Tribe/Validate.php:267
2182
  msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
2183
+ msgstr "%s doit être un permalien valide (nombre, lettres, tirets et tirets de soulignement)."
2184
 
2185
  #: src/Tribe/Validate.php:200 src/Tribe/Validate.php:228
2186
  msgid "%s must be a positive number."
2188
 
2189
  #: src/Tribe/Validate.php:152
2190
  msgid "%s must contain numbers, letters and dots only"
2191
+ msgstr "%s doit contenir uniquement des chiffres, lettres et points"
2192
 
2193
  #: src/Tribe/Validate.php:120 src/Tribe/Validate.php:136
2194
  msgid "%s must contain numbers and letters only"
2195
+ msgstr "%s doit contenir des chiffres et des lettres seulement"
2196
 
2197
  #: src/Tribe/Validate.php:105
2198
  msgctxt "non-existant function name passed for field validation"
2199
  msgid "with function name:"
2200
+ msgstr "avec le nom de la fonction :"
2201
 
2202
  #: src/Tribe/Validate.php:104
2203
  msgid "Non-existant field validation function passed"
2204
+ msgstr "La fonction de validation du champ transmis n'existe pas"
2205
 
2206
  #: src/Tribe/Validate.php:73 src/Tribe/Validate.php:85
2207
  #: src/Tribe/Validate.php:105
2208
  msgid "Field ID:"
2209
+ msgstr "Identifiant du dhamp :"
2210
 
2211
  #: src/Tribe/Validate.php:72 src/Tribe/Validate.php:84
2212
  msgid "Invalid or incomplete field passed"
2213
+ msgstr "Le champ transmis est incomplet ou incorrect"
2214
 
2215
  #: src/Tribe/Support.php:188 src/Tribe/Support.php:189
2216
  msgid "Unknown or not set"
2217
+ msgstr "Inconnu ou non défini"
2218
 
2219
  #: src/admin-views/tribe-options-help.php:41
2220
  msgid "System Information"
2221
+ msgstr "Informations sur le système"
2222
 
2223
  #: src/Tribe/Settings_Tab.php:222
2224
  msgid "There are no fields setup for this tab yet."
2225
+ msgstr "Il n'y a pas encore de configuration de champs pour cet onglet."
2226
 
2227
  #: src/Tribe/Settings.php:621
2228
  msgid "The above setting was not saved. Other settings were successfully saved."
2229
  msgid_plural "The above settings were not saved. Other settings were successfully saved."
2230
+ msgstr[0] "Le réglage ci-dessus n&#39;a pas été enregistré. Les autres paramètres ont été correctement enregistrés."
2231
+ msgstr[1] "Les réglages ci-dessus n&#39;ont pas été enregistrés. Les autres paramètres ont été correctement enregistrés."
2232
 
2233
  #: src/Tribe/Settings.php:620
2234
  msgid "None of your settings were saved. Please try again."
2235
+ msgstr "Aucun de vos réglages n'a été sauvegardé. Merci de réessayer."
2236
 
2237
  #: src/Tribe/Settings.php:610
2238
  msgid "Your form had the following errors:"
2239
+ msgstr "Votre formulaire contiens les erreurs suivantes :"
2240
 
2241
  #: src/Tribe/Settings.php:431
2242
  msgid "The request wasn't sent from this tab."
2243
+ msgstr "La requête n'a pas été envoyée depuis cet onglet."
2244
 
2245
  #: src/Tribe/Settings.php:425
2246
  msgid "The request was sent insecurely."
2247
+ msgstr "La requête a été envoyée de manière non sécurisée."
2248
 
2249
  #: src/Tribe/Settings.php:419
2250
  msgid "You don't have permission to do that."
2251
+ msgstr "Vous n'avez pas la permission d'effectuer ceci."
2252
 
2253
  #: src/Tribe/Settings.php:363
2254
  msgid "You've requested a non-existent tab."
2255
+ msgstr "L'onglet demandé n'existe pas."
2256
 
2257
  #: src/Tribe/Settings.php:349
2258
  msgid "%s Settings"
2259
+ msgstr "Préférences %s"
2260
 
2261
  #: src/Tribe/Settings.php:253 src/Tribe/Settings.php:273
2262
  msgid "Events Settings"
2263
+ msgstr "Réglages d'événements"
2264
 
2265
  #: src/Tribe/PUE/Checker.php:896
2266
  msgid "Hmmm... something's wrong with this validator. Please contact %ssupport%s."
2267
+ msgstr "Hum... Quelque chose ne va pas avec ce validateur. Merci de contacter %sle support%s."
2268
 
2269
  #: src/Tribe/PUE/Checker.php:935
2270
  msgid "Valid Key! Expires on %s"
2271
+ msgstr "Clé valide ! Expire le %s"
2272
 
2273
  #: src/Tribe/PUE/Checker.php:915
2274
  msgid "Sorry, key validation server is not available."
2275
+ msgstr "Désolé, le serveur de validation des clés n'est pas disponible."
2276
 
2277
  #: src/Tribe/PUE/Checker.php:650
2278
  msgid "License key(s) updated."
2284
 
2285
  #: src/Tribe/PUE/Checker.php:509 src/Tribe/PUE/Checker.php:520
2286
  msgid "License Key"
2287
+ msgstr "Clé de licence"
2288
 
2289
  #: src/Tribe/Main.php:248
2290
  msgid "Search:"
2291
+ msgstr "Rechercher :"
2292
 
2293
  #: src/Tribe/Settings.php:254
2294
  msgid "Settings"
2295
+ msgstr "Préférences"
2296
 
2297
  #: src/Tribe/Settings_Manager.php:219
2298
  msgid "Network"
2300
 
2301
  #: src/Tribe/Main.php:274
2302
  msgid "Done"
2303
+ msgstr "Terminé"
2304
 
2305
  #: src/Tribe/Main.php:273 src/Tribe/Main.php:275
2306
  msgid "Today"
2312
 
2313
  #: src/Tribe/Main.php:254 src/Tribe/Main.php:271
2314
  msgid "Next"
2315
+ msgstr "Suivant"
2316
 
2317
  #: src/Tribe/Settings_Manager.php:279
2318
  msgid "Help"
2320
 
2321
  #: src/Tribe/Settings_Manager.php:55
2322
  msgid "Display"
2323
+ msgstr "Affichage"
2324
 
2325
  #: src/Tribe/Settings_Manager.php:253
2326
  #: src/admin-views/tribe-options-licenses.php:66
2327
  msgid "Licenses"
2328
+ msgstr "Licences"
2329
 
2330
  #: src/Tribe/Admin/Help_Page.php:59 src/Tribe/Customizer.php:642
2331
  #: src/Tribe/Plugins_API.php:25
2332
  msgid "The Events Calendar"
2333
+ msgstr "The Events Calendar"
2334
 
2335
  #: src/Tribe/Settings.php:177 src/Tribe/Settings.php:241
2336
  #: src/Tribe/Settings.php:242
2339
 
2340
  #: src/Tribe/Settings.php:643
2341
  msgid "Settings saved."
2342
+ msgstr "Réglages sauvegardés."
2343
 
2344
  #: src/Tribe/Settings_Manager.php:54
2345
  msgid "General"
2347
 
2348
  #: src/Tribe/Field.php:626
2349
  msgid "No select options specified"
2350
+ msgstr "Aucune option sélectionnée dans la liste déroulante"
2351
 
2352
  #: src/Tribe/Field.php:568
2353
  msgid "No checkbox options specified"
2354
+ msgstr "Aucune case cochée"
2355
 
2356
  #: src/Tribe/Field.php:532
2357
  msgid "No radio options specified"
2358
+ msgstr "Aucune option sélectionnée"
2359
 
2360
  #: src/Tribe/Field.php:231
2361
  msgid "Invalid field type specified"
2362
+ msgstr "Type de champ spécifié invalide"
2363
 
2364
  #: src/Tribe/Credits.php:31
2365
  msgid "This calendar is powered by The Events Calendar."
2366
+ msgstr "Ce calendrier est généré par The Events Calendar."
2367
 
2368
  #: src/Tribe/App_Shop.php:50 src/Tribe/App_Shop.php:51
2369
  #: src/Tribe/App_Shop.php:72
2370
  msgid "Event Add-Ons"
2371
+ msgstr "Modules d'événement"
2372
 
2373
  #: src/Tribe/Languages/Locations.php:55
2374
  msgid "United States"
2375
+ msgstr "USA"
common/lang/tribe-common-fr_FR.mo CHANGED
Binary file
common/lang/tribe-common-fr_FR.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-09-24 17:52:13+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,21 +11,59 @@ msgstr ""
11
  "Language: fr\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
20
- msgstr ""
21
 
22
  #: src/Tribe/Admin/Notice/Php_Version.php:101
23
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
24
- msgstr ""
25
 
26
  #: src/Tribe/Admin/Notice/Php_Version.php:98
27
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
28
- msgstr ""
29
 
30
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
31
  msgid "Every %d Minutes"
@@ -37,7 +75,7 @@ msgstr "Cherchez sur notre bureau d'assistance"
37
 
38
  #: src/Tribe/Plugins_API.php:71
39
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
40
- msgstr ""
41
 
42
  #: src/Tribe/Validate.php:184
43
  msgid "%s must not be empty"
@@ -139,11 +177,11 @@ msgstr "Une nouvelle version de %1$s est disponible. %2$s"
139
  msgid "Update now to version %s."
140
  msgstr "Passez à présent à la version %s."
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "Vous pouvez toujours vérifier le statut de vos licences en vous connectant à votre compte %1$s sur le site theeventscalendar.com%2$s."
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "On dirait que vous utilisez %1$s, mais la clé de licence est invalide. Veuillez télécharger la version la plus récente %2$sdepuis votre compte%3$s."
@@ -361,18 +399,18 @@ msgstr "Parcourir toutes les extensions"
361
  msgid "Events Add-Ons"
362
  msgstr "Extensions d'événements"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s et %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] "Vous avez une clé de licence pour %1$s mais la clé est hors des installations. %2$sVisitez le site Web de Events Calendar%3$s pour gérer vos installations, mettre à jour votre licence ou en acheter une nouvelle."
373
  msgstr[1] "Vous avez des clés de licence pour %1$s mais vos clés sont hors des installations. %2$sVisitez le site Web de Events Calendar%3$s pour gérer vos installations, mettre à jour vos licences ou en acheter de nouvelles."
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "Une mise à jour est disponible pour %1$s mais votre licence a expirée. %2$sVisitez le site Web de Events Calendar pour renouveler votre licence.%3$s"
@@ -443,11 +481,11 @@ msgstr "Oui, partager automatiquement mes informations système avec l'équipe d
443
  msgid "English"
444
  msgstr "Anglais"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr " (s'ouvre dans une nouvelle fenêtre)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Renouveler maintenant votre licence"
453
 
@@ -1981,7 +2019,7 @@ msgstr "Botswana"
1981
 
1982
  #: src/Tribe/Languages/Locations.php:83
1983
  msgid "Bosnia and Herzegovina"
1984
- msgstr ""
1985
 
1986
  #: src/Tribe/Languages/Locations.php:82
1987
  msgid "Bolivia"
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 16:17:51+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: fr\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
58
+ msgstr "L'agrégateur d'événements ajoute une fonctionnalité d'importation massive à votre calendrier. Avant de l'avoir réalisé, vous serez en train d'importer des événements à partir de Meetup, d'Eventbrite, de Google Calendar, d'iCalendar et d'autres URL avec facilité. Programmez des importations automatiques en coulisses ou effectuez-les manuellement lorsque vous êtes prêt. Allez-y et importez tout votre soûl : l'agrégateur d'événements vous relie à un tableau de commandes central dans l'administration afin de rendre vos importations aussi simples que bonjour."
59
 
60
  #: src/Tribe/Admin/Notice/Php_Version.php:101
61
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
62
+ msgstr "À partir de mars 2019, %1$s ne fonctionnera plus avec les versions antérieures à PHP 5.4. Votre site utilise actuellement la version PHP %2$s. Pour de meilleurs résultats, nous conseillons d'utiliser la version PHP 5.6 ou ultérieure."
63
 
64
  #: src/Tribe/Admin/Notice/Php_Version.php:98
65
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
66
+ msgstr "À partir de mars 2019, %1$s ne prendra plus en charge les versions antérieures à PHP 5.6. Votre site utilise actuellement la version PHP %2$s qui ne sera plus prise en charge par %1$s. Pour de meilleurs résultats, nous conseillons d'utiliser la version PHP 5.6 ou ultérieure."
67
 
68
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
69
  msgid "Every %d Minutes"
75
 
76
  #: src/Tribe/Plugins_API.php:71
77
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
78
+ msgstr "Event Tickets Plus vous permet de vendre des billets pour vos événements en utilisant WooCommerce, Easy Digital Downloads, ou notre outil intégré Tribe Commerce. Ajoutez des billets à vos pages et publications, ou ajoutez %1$sThe Events Calendar%2$s et vendez des billets depuis les annonces de votre événement. Créez des formulaires d'inscription personnalisés, gérez les participants, utilisez les options de capacité personnalisées et autres. L'enregistrement des invités est simple avec les codes QR et notre appli de scan personnalisée."
79
 
80
  #: src/Tribe/Validate.php:184
81
  msgid "%s must not be empty"
177
  msgid "Update now to version %s."
178
  msgstr "Passez à présent à la version %s."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "Vous pouvez toujours vérifier le statut de vos licences en vous connectant à votre compte %1$s sur le site theeventscalendar.com%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "On dirait que vous utilisez %1$s, mais la clé de licence est invalide. Veuillez télécharger la version la plus récente %2$sdepuis votre compte%3$s."
399
  msgid "Events Add-Ons"
400
  msgstr "Extensions d'événements"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s et %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] "Vous avez une clé de licence pour %1$s mais la clé est hors des installations. %2$sVisitez le site Web de Events Calendar%3$s pour gérer vos installations, mettre à jour votre licence ou en acheter une nouvelle."
411
  msgstr[1] "Vous avez des clés de licence pour %1$s mais vos clés sont hors des installations. %2$sVisitez le site Web de Events Calendar%3$s pour gérer vos installations, mettre à jour vos licences ou en acheter de nouvelles."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "Une mise à jour est disponible pour %1$s mais votre licence a expirée. %2$sVisitez le site Web de Events Calendar pour renouveler votre licence.%3$s"
481
  msgid "English"
482
  msgstr "Anglais"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr " (s'ouvre dans une nouvelle fenêtre)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Renouveler maintenant votre licence"
491
 
2019
 
2020
  #: src/Tribe/Languages/Locations.php:83
2021
  msgid "Bosnia and Herzegovina"
2022
+ msgstr "Bosnie-Herzégovine"
2023
 
2024
  #: src/Tribe/Languages/Locations.php:82
2025
  msgid "Bolivia"
common/lang/tribe-common-hu_HU.mo CHANGED
Binary file
common/lang/tribe-common-hu_HU.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-09-28 14:34:04+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,21 +11,59 @@ msgstr ""
11
  "Language: hu\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
- msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
20
- msgstr ""
21
 
22
  #: src/Tribe/Admin/Notice/Php_Version.php:101
23
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
24
- msgstr ""
25
 
26
  #: src/Tribe/Admin/Notice/Php_Version.php:98
27
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
28
- msgstr ""
29
 
30
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
31
  msgid "Every %d Minutes"
@@ -37,7 +75,7 @@ msgstr "Keressél a helpdesken"
37
 
38
  #: src/Tribe/Plugins_API.php:71
39
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
40
- msgstr ""
41
 
42
  #: src/Tribe/Validate.php:184
43
  msgid "%s must not be empty"
@@ -139,11 +177,11 @@ msgstr "A %1$s bővítményhez elérhető egy új verzió. %2$s"
139
  msgid "Update now to version %s."
140
  msgstr "Frissítés a %s verzióra."
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "Bármikor leellenőrizheted a licenszeid státuszát, ha %1$sbejelentkezel a fiókodba a theeventscalendar.com oldalon%2$s."
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "Úgy tűnik, hogy a(z) %1$s bővítményt használod, de a licensz kulcs érvénytelen. Töltsd le az legfrissebb verziót %2$sa fiókodból%3$s."
@@ -361,18 +399,18 @@ msgstr "Összes kiegészítő megtekintése"
361
  msgid "Events Add-Ons"
362
  msgstr "Esemény kiegészítők"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s és %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] "A(z) %1$s bővítményhez rendelkezel licensz kulccsal, de már nem használható több helyen. %2$sLátogass el a The Events Calendar weboldalára%3$s a licenszeid kezeléséhez, frissítéséhez, vagy egy új licensz vásárlásához."
373
  msgstr[1] "A(z) %1$s bővítményekhez rendelkezel licensz kulccsal, de azok már nem használhatóak több helyen. %2$sLátogass el a The Events Calendar weboldalára%3$s a licenszeid kezeléséhez, frissítéséhez, vagy egy új licensz vásárlásához."
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "A(z) %1$s bővítményhez elérhető egy frissítés, de a licenszed lejárt. %2$sLátogass el a The Events Calendar weboldalára a licenszed megújításához.%3$s"
@@ -443,11 +481,11 @@ msgstr "Igen, automatikusan megosztom a rendszerinformációmat a Modern Tribe t
443
  msgid "English"
444
  msgstr "Angol"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr "(új ablakban nyílik meg)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Licensz megújítása most"
453
 
@@ -1981,7 +2019,7 @@ msgstr "Botswana"
1981
 
1982
  #: src/Tribe/Languages/Locations.php:83
1983
  msgid "Bosnia and Herzegovina"
1984
- msgstr ""
1985
 
1986
  #: src/Tribe/Languages/Locations.php:82
1987
  msgid "Bolivia"
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 19:24:52+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: hu\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
+ msgstr "Kiürít"
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
58
+ msgstr "Az Event Aggregator erőteljes importálási funkciókat ad a naptáradhoz. Segítségével könnyen importálhatsz eseményeket a Meetup-ról, a Facebook-ról, Google Naptárból, iCalendar-okból és már URL-ekből. Az importálás lehet időzített, ami a háttérben fut, vagy futtathatod manuálisan, amikor szeretnéd. Gyerünk, importáld a kedvenc eseményeidet - az Event Aggregator irányítópultja segítségével könnyen kezelheted az importjaidat."
59
 
60
  #: src/Tribe/Admin/Notice/Php_Version.php:101
61
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
62
+ msgstr "2019. márciustól a(z) %1$s nem fog működni a PHP 5.4-nél régebbi verzióin. A weboldalon jelenleg PHP %2$s verzió fut. A legjobb eredmény érdekében javasolt a PHP 5.6 vagy újabb használata."
63
 
64
  #: src/Tribe/Admin/Notice/Php_Version.php:98
65
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
66
+ msgstr "2019 márciustól a(z) %1$s nem fog működni a PHP 5.6-nél régebbi verzióin. A weboldalon jelenleg PHP %2$s verzió fut, amin nem fog futni a(z) %1$s. A legjobb eredmény érdekében javasoljuk a PHP 5.6 vagy újabb használatát."
67
 
68
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
69
  msgid "Every %d Minutes"
75
 
76
  #: src/Tribe/Plugins_API.php:71
77
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
78
+ msgstr "Az Event Tickets Plus segítségével jegyeket árulhatsz az eseményeidre a WooCommerce, az Easy Digital Downloads vagy a beépített Tribe Commerce eszköz segítségével. Készíthetsz jegyeket blogbejegyzésekhez, oldalakhoz, vagy telepítsd a %1$s The Events Calendar%2$st és árulj jegyeket az eseményeidre. Hozz létre egyedi regisztrációs űrlapokat, kezeld a résztvevőket, használj egyedi készlet kezelést, és még sok minden más. A jegyekhez QR-kód is készül a résztvevők beléptetéshez, ami az egyedi jegyszkennelő applikációnkkal még könnyebb."
79
 
80
  #: src/Tribe/Validate.php:184
81
  msgid "%s must not be empty"
177
  msgid "Update now to version %s."
178
  msgstr "Frissítés a %s verzióra."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "Bármikor leellenőrizheted a licenszeid státuszát, ha %1$sbejelentkezel a fiókodba a theeventscalendar.com oldalon%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "Úgy tűnik, hogy a(z) %1$s bővítményt használod, de a licensz kulcs érvénytelen. Töltsd le az legfrissebb verziót %2$sa fiókodból%3$s."
399
  msgid "Events Add-Ons"
400
  msgstr "Esemény kiegészítők"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s és %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] "A(z) %1$s bővítményhez rendelkezel licensz kulccsal, de már nem használható több helyen. %2$sLátogass el a The Events Calendar weboldalára%3$s a licenszeid kezeléséhez, frissítéséhez, vagy egy új licensz vásárlásához."
411
  msgstr[1] "A(z) %1$s bővítményekhez rendelkezel licensz kulccsal, de azok már nem használhatóak több helyen. %2$sLátogass el a The Events Calendar weboldalára%3$s a licenszeid kezeléséhez, frissítéséhez, vagy egy új licensz vásárlásához."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "A(z) %1$s bővítményhez elérhető egy frissítés, de a licenszed lejárt. %2$sLátogass el a The Events Calendar weboldalára a licenszed megújításához.%3$s"
481
  msgid "English"
482
  msgstr "Angol"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr "(új ablakban nyílik meg)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Licensz megújítása most"
491
 
2019
 
2020
  #: src/Tribe/Languages/Locations.php:83
2021
  msgid "Bosnia and Herzegovina"
2022
+ msgstr "Bosznia-Hercegovina"
2023
 
2024
  #: src/Tribe/Languages/Locations.php:82
2025
  msgid "Bolivia"
common/lang/tribe-common-id_ID.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: id\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: id\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-is_IS.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: is\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: is\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-it_IT.mo CHANGED
Binary file
common/lang/tribe-common-it_IT.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-09-24 17:53:18+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,21 +11,59 @@ msgstr ""
11
  "Language: it\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
20
- msgstr ""
21
 
22
  #: src/Tribe/Admin/Notice/Php_Version.php:101
23
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
24
- msgstr ""
25
 
26
  #: src/Tribe/Admin/Notice/Php_Version.php:98
27
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
28
- msgstr ""
29
 
30
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
31
  msgid "Every %d Minutes"
@@ -37,7 +75,7 @@ msgstr "Cerca il nostro help desk del supporto"
37
 
38
  #: src/Tribe/Plugins_API.php:71
39
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
40
- msgstr ""
41
 
42
  #: src/Tribe/Validate.php:184
43
  msgid "%s must not be empty"
@@ -139,11 +177,11 @@ msgstr "È disponibile una nuova versione di %1$s. %2$s"
139
  msgid "Update now to version %s."
140
  msgstr "Passa ora alla versione %s."
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "Puoi sempre controllare lo stato delle tue licenze accedendo al %1$stuo account su theeventscalendar.com%2$s."
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "Sembra che tu stia utilizzando %1$s, ma la chiave di licenza non è valida. Scarica l'ultima versione %2$sdal tuo account%3$s."
@@ -361,18 +399,18 @@ msgstr "Sfoglia tutti i componenti aggiuntivi"
361
  msgid "Events Add-Ons"
362
  msgstr "Componenti aggiuntivi degli eventi"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s e %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] "Hai una chiave di licenza per %1$s, ma la chiave non ha più attivazioni disponibili. %2$sVisita il sito web di Events Calendar%3$s per gestire le tue installazioni, aggiornare la licenza o acquistarne una nuova."
373
  msgstr[1] "Hai chiavi di licenza per %1$s, ma le chiavi non hanno più attivazioni disponibili. %2$sVisita il sito web di The Events Calendar%3$s per gestire le tue installazioni, aggiornare le licenze o acquistarne di nuove."
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "È disponibile un aggiornamento per %1$s, ma la tua licenza è scaduta. %2$sVisita il sito web di The Events Calendar per rinnovare la licenza.%3$s"
@@ -443,11 +481,11 @@ msgstr "Sì, condividi automaticamente le informazioni del mio sistema con il te
443
  msgid "English"
444
  msgstr "Inglese"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr " (si apre in una nuova finestra)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Rinnova subito la tua licenza"
453
 
@@ -526,7 +564,7 @@ msgstr "Event Tickets Plus e Community Events"
526
 
527
  #: src/Tribe/Plugins_API.php:104
528
  msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
529
- msgstr "Permetti agli organizzatori di Community Events di offrire biglietti ai loro eventi. Puoi impostare opzioni di commissioni e pagamento flessibili. Puoi addirittura effettuare il check-in dei partecipanti ai loro eventi! Tutto questo gestito dal front-end del tuo sito senza dover nemmeno dare l'accesso all'amministratore"
530
 
531
  #: src/Tribe/Plugins_API.php:48
532
  msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
@@ -1981,7 +2019,7 @@ msgstr "Botswana"
1981
 
1982
  #: src/Tribe/Languages/Locations.php:83
1983
  msgid "Bosnia and Herzegovina"
1984
- msgstr ""
1985
 
1986
  #: src/Tribe/Languages/Locations.php:82
1987
  msgid "Bolivia"
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 16:18:42+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: it\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
58
+ msgstr "Event Aggregator aggiunge enormi funzionalità di importazione al tuo calendario. Prima di rendertene conto importerai facilmente eventi da Meetup, Eventbrite, Google Calendar, iCalendar e altri URL. Pianifica le importazioni per eseguirle automaticamente dietro le quinte o manualmente quando sei pronto. Vai avanti e importa i contenuti che ti stanno a cuore. Event Aggregator ti collega a un pannello centrale nell'area di amministrazione per semplificare al massimo la gestione delle importazioni."
59
 
60
  #: src/Tribe/Admin/Notice/Php_Version.php:101
61
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
62
+ msgstr "A partire da marzo 2019, %1$s non funzionerà più con le versioni più obsolete di PHP 5.4. Attualmente il tuo sito sta utilizzando la versione PHP %2$s. Per i migliori risultati consigliamo di utilizzare PHP 5.6 o una versione successiva."
63
 
64
  #: src/Tribe/Admin/Notice/Php_Version.php:98
65
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
66
+ msgstr "A partire da marzo 2019 %1$s non supporterà più le versioni più obsolete di PHP 5.6. Attualmente il tuo sito sta utilizzando la versione PHP %2$s, che non sarà più supportata da %1$s. Per i migliori risultati consigliamo di utilizzare PHP 5.6 o una versione successiva."
67
 
68
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
69
  msgid "Every %d Minutes"
75
 
76
  #: src/Tribe/Plugins_API.php:71
77
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
78
+ msgstr "Event Tickets Plus ti permette di vendere i biglietti dei tuoi eventi utilizzando WooCommerce, Easy Digital Download o il nostro strumento integrato Tribe Commerce. Aggiungi biglietti ai tuoi post e pagine oppure aggiungi %1$sThe Events Calendar%2$s e vendi i biglietti dai tuoi elenchi di eventi. Crea moduli di registrazione personalizzati, gestisci i partecipanti, utilizza le opzioni di capacità e molto altro ancora. Il check-in degli ospiti è semplice con i codici QR e la nostra app di scansione personalizzata."
79
 
80
  #: src/Tribe/Validate.php:184
81
  msgid "%s must not be empty"
177
  msgid "Update now to version %s."
178
  msgstr "Passa ora alla versione %s."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "Puoi sempre controllare lo stato delle tue licenze accedendo al %1$stuo account su theeventscalendar.com%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "Sembra che tu stia utilizzando %1$s, ma la chiave di licenza non è valida. Scarica l'ultima versione %2$sdal tuo account%3$s."
399
  msgid "Events Add-Ons"
400
  msgstr "Componenti aggiuntivi degli eventi"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s e %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] "Hai una chiave di licenza per %1$s, ma la chiave non ha più attivazioni disponibili. %2$sVisita il sito web di Events Calendar%3$s per gestire le tue installazioni, aggiornare la licenza o acquistarne una nuova."
411
  msgstr[1] "Hai chiavi di licenza per %1$s, ma le chiavi non hanno più attivazioni disponibili. %2$sVisita il sito web di The Events Calendar%3$s per gestire le tue installazioni, aggiornare le licenze o acquistarne di nuove."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "È disponibile un aggiornamento per %1$s, ma la tua licenza è scaduta. %2$sVisita il sito web di The Events Calendar per rinnovare la licenza.%3$s"
481
  msgid "English"
482
  msgstr "Inglese"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr " (si apre in una nuova finestra)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Rinnova subito la tua licenza"
491
 
564
 
565
  #: src/Tribe/Plugins_API.php:104
566
  msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
567
+ msgstr "Permetti agli organizzatori di Community Events di offrire biglietti ai loro eventi. Puoi impostare opzioni di commissioni e pagamento flessibili. Puoi addirittura effettuare il check-in dei partecipanti ai loro eventi! Tutto questo gestito dal front-end del tuo sito senza dover nemmeno dare l'accesso all'amministratore."
568
 
569
  #: src/Tribe/Plugins_API.php:48
570
  msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
2019
 
2020
  #: src/Tribe/Languages/Locations.php:83
2021
  msgid "Bosnia and Herzegovina"
2022
+ msgstr "Bosnia ed Erzegovina"
2023
 
2024
  #: src/Tribe/Languages/Locations.php:82
2025
  msgid "Bolivia"
common/lang/tribe-common-ja.mo CHANGED
Binary file
common/lang/tribe-common-ja.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-09-24 17:59:08+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,21 +11,59 @@ msgstr ""
11
  "Language: ja_JP\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
20
- msgstr ""
21
 
22
  #: src/Tribe/Admin/Notice/Php_Version.php:101
23
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
24
- msgstr ""
25
 
26
  #: src/Tribe/Admin/Notice/Php_Version.php:98
27
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
28
- msgstr ""
29
 
30
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
31
  msgid "Every %d Minutes"
@@ -37,7 +75,7 @@ msgstr "当社のサポート ヘルプ デスクを検索"
37
 
38
  #: src/Tribe/Plugins_API.php:71
39
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
40
- msgstr ""
41
 
42
  #: src/Tribe/Validate.php:184
43
  msgid "%s must not be empty"
@@ -139,11 +177,11 @@ msgstr "新しいバージョンの %1$s をご利用いただくことができ
139
  msgid "Update now to version %s."
140
  msgstr "新しいバージョン %s に今すぐアップデートしてください。"
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "%1$stheeventscalendar.com のご自分のアカウント%2$sにログインすると、ライセンスのステータスをいつでもご確認いただくことができます。"
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "%1$s をご使用いただいているようですが、ライセンス キーが無効です。%2$sご使用のアカウント%3$sから最新バージョンをダウンロードしてください。"
@@ -360,17 +398,17 @@ msgstr "すべてのアドオンを参照する"
360
  msgid "Events Add-Ons"
361
  msgstr "Events アドオン"
362
 
363
- #: src/Tribe/PUE/Notices.php:383
364
  msgctxt "formatted plugin list"
365
  msgid "%1$s and %2$s"
366
  msgstr "%1$s および %2$s"
367
 
368
- #: src/Tribe/PUE/Notices.php:302
369
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
370
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
371
  msgstr[0] "%1$s 用のライセンス キーをお持ちですが、キーがインストールされていません。%2$sEvents Calendar ウェブサイトにアクセス%3$sし、インストール状況の管理、ライセンスのアップグレード、または新規購入を行ってください。"
372
 
373
- #: src/Tribe/PUE/Notices.php:270
374
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
375
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
376
  msgstr[0] "%1$s のアップデートをご利用いただけますが、ライセンスの期限が切れています。%2$sEvents Calendar ウェブサイトにアクセスし、ライセンスを更新してください。%3$s"
@@ -440,11 +478,11 @@ msgstr "はい、私のシステム情報を Modern Tribe サポート チーム
440
  msgid "English"
441
  msgstr "英語"
442
 
443
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
444
  msgid " (opens in a new window)"
445
  msgstr " (新しいウィンドウで開く)"
446
 
447
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
448
  msgid "Renew Your License Now"
449
  msgstr "今すぐライセンスを更新する"
450
 
@@ -1978,7 +2016,7 @@ msgstr "ボツワナ"
1978
 
1979
  #: src/Tribe/Languages/Locations.php:83
1980
  msgid "Bosnia and Herzegovina"
1981
- msgstr ""
1982
 
1983
  #: src/Tribe/Languages/Locations.php:82
1984
  msgid "Bolivia"
@@ -2118,7 +2156,7 @@ msgstr "%s は、数字またはパーセンテージである必要がありま
2118
 
2119
  #: src/Tribe/Validate.php:368
2120
  msgid "%s cannot be a duplicate"
2121
- msgstr "%s は、重複できません。"
2122
 
2123
  #: src/Tribe/Validate.php:366
2124
  msgid "%s cannot be the same as %s."
@@ -2126,7 +2164,7 @@ msgstr "%s は、%s と同じにできません。"
2126
 
2127
  #: src/Tribe/Validate.php:359
2128
  msgid "Comparison validation failed because no comparison value was provided, for field %s"
2129
- msgstr "フィールド %s の比較値が提供されていないため、比較検証が正常に完了しませんでした。"
2130
 
2131
  #: src/Tribe/Validate.php:298 src/Tribe/Validate.php:310
2132
  #: src/Tribe/Validate.php:323 src/Tribe/Validate.php:345
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 16:19:25+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: ja_JP\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
58
+ msgstr "Event Aggregator は、ご使用のカレンダーに大幅なインポート機能を追加します。自分で気づくよりも前に、Meetup、Eventbrite、Google カレンダー、iCalendar、およびその他の URL から簡単にイベントがインポートされます。舞台裏でインポートを自動実行するようにスケジュールしたり、準備ができたときに手動で実行できます。お好みに合わせて、インポートを開始しましょう。Event Aggregator は、管理部門のセントラル ダッシュボードにぴったりと組み合わされ、インポート作業をとても簡単に管理できるようになります。"
59
 
60
  #: src/Tribe/Admin/Notice/Php_Version.php:101
61
  msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
62
+ msgstr "2019 年 3 月以降、%1$s は、PHP 5.4 よりも前のバージョンをサポートいたしません。現在、ご利用いただいているサイトは、PHP バージョン %2$s です。最適な結果を得るには、PHP 5.6 以上をお薦めしています。"
63
 
64
  #: src/Tribe/Admin/Notice/Php_Version.php:98
65
  msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
66
+ msgstr "2019 年 3 月以降、%1$s は、PHP 5.6 よりも前のバージョンをサポートいたしません。現在、ご利用いただいているサイトは、PHP バージョン %2$s であり、%1$s によるサポートがなくなります。最適な結果を得るには、PHP 5.6 以上をお薦めしています。"
67
 
68
  #: vendor/a5hleyrich/wp-background-processing/classes/wp-background-process.php:425
69
  msgid "Every %d Minutes"
75
 
76
  #: src/Tribe/Plugins_API.php:71
77
  msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
78
+ msgstr "Event Tickets Plus では、WooCommerce、Easy Digital Downloads、または当社のビルトイン Tribe Commerce ツールを使用して、イベントのチケットを販売できるようになります。投稿やページにチケットを追加したり、%1$sEvents Calendar%2$s を追加して、イベント リストからチケットを販売します。カスタム登録フォームの作成、出席者の管理、カスタム定員オプションなどなど、さまざまな機能が用意されています。ゲストは、QR コードと当社スキャニング アプリを使用して、簡単にチェックインできます。"
79
 
80
  #: src/Tribe/Validate.php:184
81
  msgid "%s must not be empty"
177
  msgid "Update now to version %s."
178
  msgstr "新しいバージョン %s に今すぐアップデートしてください。"
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "%1$stheeventscalendar.com のご自分のアカウント%2$sにログインすると、ライセンスのステータスをいつでもご確認いただくことができます。"
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "%1$s をご使用いただいているようですが、ライセンス キーが無効です。%2$sご使用のアカウント%3$sから最新バージョンをダウンロードしてください。"
398
  msgid "Events Add-Ons"
399
  msgstr "Events アドオン"
400
 
401
+ #: src/Tribe/PUE/Notices.php:440
402
  msgctxt "formatted plugin list"
403
  msgid "%1$s and %2$s"
404
  msgstr "%1$s および %2$s"
405
 
406
+ #: src/Tribe/PUE/Notices.php:359
407
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
408
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
409
  msgstr[0] "%1$s 用のライセンス キーをお持ちですが、キーがインストールされていません。%2$sEvents Calendar ウェブサイトにアクセス%3$sし、インストール状況の管理、ライセンスのアップグレード、または新規購入を行ってください。"
410
 
411
+ #: src/Tribe/PUE/Notices.php:327
412
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
413
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
414
  msgstr[0] "%1$s のアップデートをご利用いただけますが、ライセンスの期限が切れています。%2$sEvents Calendar ウェブサイトにアクセスし、ライセンスを更新してください。%3$s"
478
  msgid "English"
479
  msgstr "英語"
480
 
481
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
482
  msgid " (opens in a new window)"
483
  msgstr " (新しいウィンドウで開く)"
484
 
485
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
486
  msgid "Renew Your License Now"
487
  msgstr "今すぐライセンスを更新する"
488
 
2016
 
2017
  #: src/Tribe/Languages/Locations.php:83
2018
  msgid "Bosnia and Herzegovina"
2019
+ msgstr "ボスニア・ヘルツェゴビナ"
2020
 
2021
  #: src/Tribe/Languages/Locations.php:82
2022
  msgid "Bolivia"
2156
 
2157
  #: src/Tribe/Validate.php:368
2158
  msgid "%s cannot be a duplicate"
2159
+ msgstr "%s は、重複できません"
2160
 
2161
  #: src/Tribe/Validate.php:366
2162
  msgid "%s cannot be the same as %s."
2164
 
2165
  #: src/Tribe/Validate.php:359
2166
  msgid "Comparison validation failed because no comparison value was provided, for field %s"
2167
+ msgstr "フィールド %s の比較値が提供されていないため、比較検証が正常に完了しませんでした"
2168
 
2169
  #: src/Tribe/Validate.php:298 src/Tribe/Validate.php:310
2170
  #: src/Tribe/Validate.php:323 src/Tribe/Validate.php:345
common/lang/tribe-common-lt_LT.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: lt\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: lt\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-lv.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: lv\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: lv\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-nb_NO.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: nb_NO\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: nb_NO\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-nl_NL.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: nl\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr "Blader door alle Add-Ons"
361
  msgid "Events Add-Ons"
362
  msgstr "Events Add-Ons"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s en %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "Er is een update beschikbaar voor %1$s, maar je licentie is verlopen. %2$sBezoek de Events Calendar website om je licentie te vernieuwen.%3$s"
@@ -443,11 +481,11 @@ msgstr "Ja, ik wil mijn systeeminformatie automatisch delen met het Modern Tribe
443
  msgid "English"
444
  msgstr "Engels"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr "(opent in een nieuw scherm)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Verleng je licentie nu"
453
 
11
  "Language: nl\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr "Events Add-Ons"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s en %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "Er is een update beschikbaar voor %1$s, maar je licentie is verlopen. %2$sBezoek de Events Calendar website om je licentie te vernieuwen.%3$s"
481
  msgid "English"
482
  msgstr "Engels"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr "(opent in een nieuw scherm)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Verleng je licentie nu"
491
 
common/lang/tribe-common-pl_PL.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: pl\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: pl\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-pt_BR.mo CHANGED
Binary file
common/lang/tribe-common-pt_BR.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-11-09 00:35:37+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,9 +11,47 @@ msgstr ""
11
  "Language: pt_BR\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
- msgstr ""
17
 
18
  #: src/Tribe/Plugins_API.php:37
19
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
@@ -139,11 +177,11 @@ msgstr "Existe uma nova versão do %1$s disponível. %2$s"
139
  msgid "Update now to version %s."
140
  msgstr "Atualize agora para a versão %s."
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "Você sempre pode verificar o status de suas licenças por efetuar login em %1$ssua conta no theeventscalendar.com%2$s."
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "Parece que você está usando %1$s, mas a chave de licença é inválida. Faça o download da versão mais recente %2$sem sua conta%3$s."
@@ -361,18 +399,18 @@ msgstr "Procurar todos os complementos"
361
  msgid "Events Add-Ons"
362
  msgstr "Complementos de eventos"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s e %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] "Você tem uma chave de licença para %1$s, mas a chave está sem instalações restantes. %2$sVisite o site do Events Calendar%3$s para gerenciar suas instalações, atualizar sua licença ou adquirir uma nova."
373
  msgstr[1] "Você tem chaves de licença para %1$s, mas suas chaves estão sem instalações restantes. %2$sVisite o site do Events Calendar%3$s para gerenciar suas instalações, atualizar suas licenças ou adquirir novas."
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "Há uma atualização disponível para o %1$s, mas sua licença expirou. %2$sVisite o site do Events Calendar para renovar sua licença.%3$s"
@@ -443,11 +481,11 @@ msgstr "Sim, compartilhar automaticamente as minhas informações do sistema com
443
  msgid "English"
444
  msgstr "Inglês"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr " (abre numa nova janela)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Renove sua licença agora"
453
 
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-11-12 16:48:23+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: pt_BR\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
+ msgstr "Limpar"
55
 
56
  #: src/Tribe/Plugins_API.php:37
57
  msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
177
  msgid "Update now to version %s."
178
  msgstr "Atualize agora para a versão %s."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "Você sempre pode verificar o status de suas licenças por efetuar login em %1$ssua conta no theeventscalendar.com%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "Parece que você está usando %1$s, mas a chave de licença é inválida. Faça o download da versão mais recente %2$sem sua conta%3$s."
399
  msgid "Events Add-Ons"
400
  msgstr "Complementos de eventos"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s e %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] "Você tem uma chave de licença para %1$s, mas a chave está sem instalações restantes. %2$sVisite o site do Events Calendar%3$s para gerenciar suas instalações, atualizar sua licença ou adquirir uma nova."
411
  msgstr[1] "Você tem chaves de licença para %1$s, mas suas chaves estão sem instalações restantes. %2$sVisite o site do Events Calendar%3$s para gerenciar suas instalações, atualizar suas licenças ou adquirir novas."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "Há uma atualização disponível para o %1$s, mas sua licença expirou. %2$sVisite o site do Events Calendar para renovar sua licença.%3$s"
481
  msgid "English"
482
  msgstr "Inglês"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr " (abre numa nova janela)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Renove sua licença agora"
491
 
common/lang/tribe-common-pt_PT.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: pt\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr "Está disponível uma nova versão de %1$s. %2$s"
139
  msgid "Update now to version %s."
140
  msgstr "Actualizar agora para a versão %s."
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr "Pode sempre consultar o estado das suas licenças na %1$ssua conta em theeventscalendar.com%2$s."
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] "Parece que está a usar o plugin %1$s, mas a chave de licença é inválida. Por favor descarregue a última versão a partir da %2$ssua conta%3$s."
@@ -361,18 +399,18 @@ msgstr "Ver todas as extensões"
361
  msgid "Events Add-Ons"
362
  msgstr "Extensões de eventos"
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr "%1$s e %2$s"
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] "Tem uma chave de licença para o %1$s mas a chave atingiu o limite máximo de instalações. %2$sVisite o site do The Events Calendar%3$s para gerir as suas instalações, actualizar a sua licença ou comprar uma nova."
373
  msgstr[1] "Tem chaves de licença para os %1$s mas as chaves atingiram o limite máximo de instalações. %2$sVisite o site do The Events Calendar%3$s para gerir as suas instalações, actualizar as suas licenças ou comprar novas."
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] "Está disponível uma actualização para o %1$s mas sua chave de licença expirou. %2$sVisite o site do The Events Calendar%3$s para renovar a sua licença."
@@ -443,11 +481,11 @@ msgstr "Sim, partilhar automaticamente as informações do meu sistema com a equ
443
  msgid "English"
444
  msgstr "Inglês"
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr " (abrir numa nova janela)"
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr "Renove a sua licença agora"
453
 
11
  "Language: pt\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr "Actualizar agora para a versão %s."
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr "Pode sempre consultar o estado das suas licenças na %1$ssua conta em theeventscalendar.com%2$s."
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] "Parece que está a usar o plugin %1$s, mas a chave de licença é inválida. Por favor descarregue a última versão a partir da %2$ssua conta%3$s."
399
  msgid "Events Add-Ons"
400
  msgstr "Extensões de eventos"
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr "%1$s e %2$s"
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] "Tem uma chave de licença para o %1$s mas a chave atingiu o limite máximo de instalações. %2$sVisite o site do The Events Calendar%3$s para gerir as suas instalações, actualizar a sua licença ou comprar uma nova."
411
  msgstr[1] "Tem chaves de licença para os %1$s mas as chaves atingiram o limite máximo de instalações. %2$sVisite o site do The Events Calendar%3$s para gerir as suas instalações, actualizar as suas licenças ou comprar novas."
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] "Está disponível uma actualização para o %1$s mas sua chave de licença expirou. %2$sVisite o site do The Events Calendar%3$s para renovar a sua licença."
481
  msgid "English"
482
  msgstr "Inglês"
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr " (abrir numa nova janela)"
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr "Renove a sua licença agora"
491
 
common/lang/tribe-common-ro_RO.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: ro\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: ro\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-ru_RU.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: ru\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: ru\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-sk_SK.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: sk\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: sk\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-sl_SI.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: sl_SI\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -363,12 +401,12 @@ msgstr ""
363
  msgid "Events Add-Ons"
364
  msgstr ""
365
 
366
- #: src/Tribe/PUE/Notices.php:383
367
  msgctxt "formatted plugin list"
368
  msgid "%1$s and %2$s"
369
  msgstr ""
370
 
371
- #: src/Tribe/PUE/Notices.php:302
372
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
373
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
374
  msgstr[0] ""
@@ -376,7 +414,7 @@ msgstr[1] ""
376
  msgstr[2] ""
377
  msgstr[3] ""
378
 
379
- #: src/Tribe/PUE/Notices.php:270
380
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
381
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
382
  msgstr[0] ""
@@ -449,11 +487,11 @@ msgstr ""
449
  msgid "English"
450
  msgstr ""
451
 
452
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
453
  msgid " (opens in a new window)"
454
  msgstr ""
455
 
456
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
457
  msgid "Renew Your License Now"
458
  msgstr ""
459
 
11
  "Language: sl_SI\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
401
  msgid "Events Add-Ons"
402
  msgstr ""
403
 
404
+ #: src/Tribe/PUE/Notices.php:440
405
  msgctxt "formatted plugin list"
406
  msgid "%1$s and %2$s"
407
  msgstr ""
408
 
409
+ #: src/Tribe/PUE/Notices.php:359
410
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
411
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
412
  msgstr[0] ""
414
  msgstr[2] ""
415
  msgstr[3] ""
416
 
417
+ #: src/Tribe/PUE/Notices.php:327
418
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
419
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
420
  msgstr[0] ""
487
  msgid "English"
488
  msgstr ""
489
 
490
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
491
  msgid " (opens in a new window)"
492
  msgstr ""
493
 
494
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
495
  msgid "Renew Your License Now"
496
  msgstr ""
497
 
common/lang/tribe-common-sr_RS.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: sr_RS\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -362,19 +400,19 @@ msgstr ""
362
  msgid "Events Add-Ons"
363
  msgstr ""
364
 
365
- #: src/Tribe/PUE/Notices.php:383
366
  msgctxt "formatted plugin list"
367
  msgid "%1$s and %2$s"
368
  msgstr ""
369
 
370
- #: src/Tribe/PUE/Notices.php:302
371
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
372
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
373
  msgstr[0] ""
374
  msgstr[1] ""
375
  msgstr[2] ""
376
 
377
- #: src/Tribe/PUE/Notices.php:270
378
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
379
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
380
  msgstr[0] ""
@@ -446,11 +484,11 @@ msgstr ""
446
  msgid "English"
447
  msgstr ""
448
 
449
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
450
  msgid " (opens in a new window)"
451
  msgstr ""
452
 
453
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
454
  msgid "Renew Your License Now"
455
  msgstr ""
456
 
11
  "Language: sr_RS\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
400
  msgid "Events Add-Ons"
401
  msgstr ""
402
 
403
+ #: src/Tribe/PUE/Notices.php:440
404
  msgctxt "formatted plugin list"
405
  msgid "%1$s and %2$s"
406
  msgstr ""
407
 
408
+ #: src/Tribe/PUE/Notices.php:359
409
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
410
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
411
  msgstr[0] ""
412
  msgstr[1] ""
413
  msgstr[2] ""
414
 
415
+ #: src/Tribe/PUE/Notices.php:327
416
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
417
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
418
  msgstr[0] ""
484
  msgid "English"
485
  msgstr ""
486
 
487
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
488
  msgid " (opens in a new window)"
489
  msgstr ""
490
 
491
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
492
  msgid "Renew Your License Now"
493
  msgstr ""
494
 
common/lang/tribe-common-sv_SE.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: sv_SE\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: sv_SE\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-tr_TR.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: tr\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -361,18 +399,18 @@ msgstr ""
361
  msgid "Events Add-Ons"
362
  msgstr ""
363
 
364
- #: src/Tribe/PUE/Notices.php:383
365
  msgctxt "formatted plugin list"
366
  msgid "%1$s and %2$s"
367
  msgstr ""
368
 
369
- #: src/Tribe/PUE/Notices.php:302
370
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
371
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
372
  msgstr[0] ""
373
  msgstr[1] ""
374
 
375
- #: src/Tribe/PUE/Notices.php:270
376
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
377
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
378
  msgstr[0] ""
@@ -443,11 +481,11 @@ msgstr ""
443
  msgid "English"
444
  msgstr ""
445
 
446
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
447
  msgid " (opens in a new window)"
448
  msgstr ""
449
 
450
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
451
  msgid "Renew Your License Now"
452
  msgstr ""
453
 
11
  "Language: tr\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
399
  msgid "Events Add-Ons"
400
  msgstr ""
401
 
402
+ #: src/Tribe/PUE/Notices.php:440
403
  msgctxt "formatted plugin list"
404
  msgid "%1$s and %2$s"
405
  msgstr ""
406
 
407
+ #: src/Tribe/PUE/Notices.php:359
408
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
409
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: src/Tribe/PUE/Notices.php:327
414
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
415
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
416
  msgstr[0] ""
481
  msgid "English"
482
  msgstr ""
483
 
484
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
485
  msgid " (opens in a new window)"
486
  msgstr ""
487
 
488
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
489
  msgid "Renew Your License Now"
490
  msgstr ""
491
 
common/lang/tribe-common-zh_CN.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: zh_CN\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -360,17 +398,17 @@ msgstr ""
360
  msgid "Events Add-Ons"
361
  msgstr ""
362
 
363
- #: src/Tribe/PUE/Notices.php:383
364
  msgctxt "formatted plugin list"
365
  msgid "%1$s and %2$s"
366
  msgstr ""
367
 
368
- #: src/Tribe/PUE/Notices.php:302
369
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
370
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
371
  msgstr[0] ""
372
 
373
- #: src/Tribe/PUE/Notices.php:270
374
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
375
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
376
  msgstr[0] ""
@@ -440,11 +478,11 @@ msgstr ""
440
  msgid "English"
441
  msgstr ""
442
 
443
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
444
  msgid " (opens in a new window)"
445
  msgstr ""
446
 
447
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
448
  msgid "Renew Your License Now"
449
  msgstr ""
450
 
11
  "Language: zh_CN\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
398
  msgid "Events Add-Ons"
399
  msgstr ""
400
 
401
+ #: src/Tribe/PUE/Notices.php:440
402
  msgctxt "formatted plugin list"
403
  msgid "%1$s and %2$s"
404
  msgstr ""
405
 
406
+ #: src/Tribe/PUE/Notices.php:359
407
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
408
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
409
  msgstr[0] ""
410
 
411
+ #: src/Tribe/PUE/Notices.php:327
412
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
413
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
414
  msgstr[0] ""
478
  msgid "English"
479
  msgstr ""
480
 
481
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
482
  msgid " (opens in a new window)"
483
  msgstr ""
484
 
485
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
486
  msgid "Renew Your License Now"
487
  msgstr ""
488
 
common/lang/tribe-common-zh_TW.po CHANGED
@@ -11,6 +11,44 @@ msgstr ""
11
  "Language: zh_TW\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: src/Tribe/Main.php:276
15
  msgid "Clear"
16
  msgstr ""
@@ -139,11 +177,11 @@ msgstr ""
139
  msgid "Update now to version %s."
140
  msgstr ""
141
 
142
- #: src/Tribe/PUE/Notices.php:340
143
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
144
  msgstr ""
145
 
146
- #: src/Tribe/PUE/Notices.php:225
147
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
148
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
149
  msgstr[0] ""
@@ -360,17 +398,17 @@ msgstr ""
360
  msgid "Events Add-Ons"
361
  msgstr ""
362
 
363
- #: src/Tribe/PUE/Notices.php:383
364
  msgctxt "formatted plugin list"
365
  msgid "%1$s and %2$s"
366
  msgstr ""
367
 
368
- #: src/Tribe/PUE/Notices.php:302
369
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
370
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
371
  msgstr[0] ""
372
 
373
- #: src/Tribe/PUE/Notices.php:270
374
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
375
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
376
  msgstr[0] ""
@@ -440,11 +478,11 @@ msgstr ""
440
  msgid "English"
441
  msgstr ""
442
 
443
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
444
  msgid " (opens in a new window)"
445
  msgstr ""
446
 
447
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
448
  msgid "Renew Your License Now"
449
  msgstr ""
450
 
11
  "Language: zh_TW\n"
12
  "Project-Id-Version: Tribe Common\n"
13
 
14
+ #: src/Tribe/Editor/Meta.php:123
15
+ msgid "Text Array"
16
+ msgstr ""
17
+
18
+ #: src/Tribe/Editor/Meta.php:105
19
+ msgid "Numeric Array"
20
+ msgstr ""
21
+
22
+ #: src/Tribe/Editor/Configuration.php:97
23
+ msgid "F j, Y g:i a"
24
+ msgstr ""
25
+
26
+ #: src/Tribe/Editor/Configuration.php:96
27
+ msgid "F j"
28
+ msgstr ""
29
+
30
+ #: src/Tribe/Editor/Configuration.php:95
31
+ msgid "F j, Y"
32
+ msgstr ""
33
+
34
+ #: src/Tribe/Editor/Configuration.php:94
35
+ msgid "g:i a"
36
+ msgstr ""
37
+
38
+ #. translators: %s: duration
39
+ #: src/Tribe/Editor/Configuration.php:90
40
+ msgid "%s ago"
41
+ msgstr ""
42
+
43
+ #. translators: %s: duration
44
+ #: src/Tribe/Editor/Configuration.php:88
45
+ msgid "%s from now"
46
+ msgstr ""
47
+
48
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
49
+ msgid "Problem loading the block, please remove this block to restart."
50
+ msgstr ""
51
+
52
  #: src/Tribe/Main.php:276
53
  msgid "Clear"
54
  msgstr ""
177
  msgid "Update now to version %s."
178
  msgstr ""
179
 
180
+ #: src/Tribe/PUE/Notices.php:397
181
  msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
182
  msgstr ""
183
 
184
+ #: src/Tribe/PUE/Notices.php:282
185
  msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
186
  msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
187
  msgstr[0] ""
398
  msgid "Events Add-Ons"
399
  msgstr ""
400
 
401
+ #: src/Tribe/PUE/Notices.php:440
402
  msgctxt "formatted plugin list"
403
  msgid "%1$s and %2$s"
404
  msgstr ""
405
 
406
+ #: src/Tribe/PUE/Notices.php:359
407
  msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
408
  msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
409
  msgstr[0] ""
410
 
411
+ #: src/Tribe/PUE/Notices.php:327
412
  msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
413
  msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
414
  msgstr[0] ""
478
  msgid "English"
479
  msgstr ""
480
 
481
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
482
  msgid " (opens in a new window)"
483
  msgstr ""
484
 
485
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
486
  msgid "Renew Your License Now"
487
  msgstr ""
488
 
common/lang/tribe-common.pot CHANGED
@@ -2,13 +2,13 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Tribe Common 4.7.23\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2018-11-12 01:19:00+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2018-11-12 01:19\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -346,6 +346,44 @@ msgstr ""
346
  msgid "A list of links to the term own, archive and parent REST URL"
347
  msgstr ""
348
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  #: src/Tribe/Error.php:38
350
  msgid "An Unknown error occurred"
351
  msgstr ""
@@ -1740,11 +1778,11 @@ msgstr ""
1740
  msgid "Thanks for setting up a valid key. It will expire on %s"
1741
  msgstr ""
1742
 
1743
- #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:283
1744
  msgid "Renew Your License Now"
1745
  msgstr ""
1746
 
1747
- #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:285
1748
  msgid " (opens in a new window)"
1749
  msgstr ""
1750
 
@@ -1784,7 +1822,7 @@ msgstr ""
1784
  msgid "Expired license. Consult your network administrator."
1785
  msgstr ""
1786
 
1787
- #: src/Tribe/PUE/Notices.php:225
1788
  msgid ""
1789
  "It looks like you're using %1$s, but the license key is invalid. Please "
1790
  "download the latest version %2$sfrom your account%3$s."
@@ -1794,7 +1832,7 @@ msgid_plural ""
1794
  msgstr[0] ""
1795
  msgstr[1] ""
1796
 
1797
- #: src/Tribe/PUE/Notices.php:270
1798
  msgid ""
1799
  "There is an update available for %1$s but your license has expired. "
1800
  "%2$sVisit the Events Calendar website to renew your license.%3$s"
@@ -1804,7 +1842,7 @@ msgid_plural ""
1804
  msgstr[0] ""
1805
  msgstr[1] ""
1806
 
1807
- #: src/Tribe/PUE/Notices.php:302
1808
  msgid ""
1809
  "You have a license key for %1$s but the key is out of installs. %2$sVisit "
1810
  "the Events Calendar website%3$s to manage your installs, upgrade your "
@@ -1816,13 +1854,13 @@ msgid_plural ""
1816
  msgstr[0] ""
1817
  msgstr[1] ""
1818
 
1819
- #: src/Tribe/PUE/Notices.php:340
1820
  msgid ""
1821
  "You can always check the status of your licenses by logging in to %1$syour "
1822
  "account on theeventscalendar.com%2$s."
1823
  msgstr ""
1824
 
1825
- #: src/Tribe/PUE/Notices.php:383
1826
  msgctxt "formatted plugin list"
1827
  msgid "%1$s and %2$s"
1828
  msgstr ""
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Tribe Common 4.8\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2018-11-28 02:47:07+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2018-11-28 02:47\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
346
  msgid "A list of links to the term own, archive and parent REST URL"
347
  msgstr ""
348
 
349
+ #: src/Tribe/Editor/Blocks/Abstract.php:127
350
+ msgid "Problem loading the block, please remove this block to restart."
351
+ msgstr ""
352
+
353
+ #. translators: %s: duration
354
+ #: src/Tribe/Editor/Configuration.php:88
355
+ msgid "%s from now"
356
+ msgstr ""
357
+
358
+ #. translators: %s: duration
359
+ #: src/Tribe/Editor/Configuration.php:90
360
+ msgid "%s ago"
361
+ msgstr ""
362
+
363
+ #: src/Tribe/Editor/Configuration.php:94
364
+ msgid "g:i a"
365
+ msgstr ""
366
+
367
+ #: src/Tribe/Editor/Configuration.php:95
368
+ msgid "F j, Y"
369
+ msgstr ""
370
+
371
+ #: src/Tribe/Editor/Configuration.php:96
372
+ msgid "F j"
373
+ msgstr ""
374
+
375
+ #: src/Tribe/Editor/Configuration.php:97
376
+ msgid "F j, Y g:i a"
377
+ msgstr ""
378
+
379
+ #: src/Tribe/Editor/Meta.php:105
380
+ msgid "Numeric Array"
381
+ msgstr ""
382
+
383
+ #: src/Tribe/Editor/Meta.php:123
384
+ msgid "Text Array"
385
+ msgstr ""
386
+
387
  #: src/Tribe/Error.php:38
388
  msgid "An Unknown error occurred"
389
  msgstr ""
1778
  msgid "Thanks for setting up a valid key. It will expire on %s"
1779
  msgstr ""
1780
 
1781
+ #: src/Tribe/PUE/Checker.php:967 src/Tribe/PUE/Notices.php:340
1782
  msgid "Renew Your License Now"
1783
  msgstr ""
1784
 
1785
+ #: src/Tribe/PUE/Checker.php:969 src/Tribe/PUE/Notices.php:342
1786
  msgid " (opens in a new window)"
1787
  msgstr ""
1788
 
1822
  msgid "Expired license. Consult your network administrator."
1823
  msgstr ""
1824
 
1825
+ #: src/Tribe/PUE/Notices.php:282
1826
  msgid ""
1827
  "It looks like you're using %1$s, but the license key is invalid. Please "
1828
  "download the latest version %2$sfrom your account%3$s."
1832
  msgstr[0] ""
1833
  msgstr[1] ""
1834
 
1835
+ #: src/Tribe/PUE/Notices.php:327
1836
  msgid ""
1837
  "There is an update available for %1$s but your license has expired. "
1838
  "%2$sVisit the Events Calendar website to renew your license.%3$s"
1842
  msgstr[0] ""
1843
  msgstr[1] ""
1844
 
1845
+ #: src/Tribe/PUE/Notices.php:359
1846
  msgid ""
1847
  "You have a license key for %1$s but the key is out of installs. %2$sVisit "
1848
  "the Events Calendar website%3$s to manage your installs, upgrade your "
1854
  msgstr[0] ""
1855
  msgstr[1] ""
1856
 
1857
+ #: src/Tribe/PUE/Notices.php:397
1858
  msgid ""
1859
  "You can always check the status of your licenses by logging in to %1$syour "
1860
  "account on theeventscalendar.com%2$s."
1861
  msgstr ""
1862
 
1863
+ #: src/Tribe/PUE/Notices.php:440
1864
  msgctxt "formatted plugin list"
1865
  msgid "%1$s and %2$s"
1866
  msgstr ""
common/readme.txt CHANGED
@@ -1,7 +1,14 @@
1
  === Tribe Common ===
2
 
 
3
  == Changelog ==
4
 
 
 
 
 
 
 
5
  = [4.7.23.1] 2018-11-21 =
6
 
7
  * Fixed - Use of the `wp_doing_cron` function that would break compatibility with sites not on WordPress version 4.8 or later [118627]
1
  === Tribe Common ===
2
 
3
+
4
  == Changelog ==
5
 
6
+ = [4.8] 2018-11-29 =
7
+
8
+ * Add - Added `tribe_cache_expiration` filter that allows plugins to use persistent caching based on cache key [117158]
9
+ * Fix - The invalid license key notice won't be displayed for Products with empty license keys [115562]
10
+ * Language - 9 new strings added, 7 updated, 1 fuzzied, and 0 obsoleted
11
+
12
  = [4.7.23.1] 2018-11-21 =
13
 
14
  * Fixed - Use of the `wp_doing_cron` function that would break compatibility with sites not on WordPress version 4.8 or later [118627]
common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php CHANGED
@@ -236,4 +236,4 @@ class Tribe__Admin__Notice__Plugin_Upgrade_Notice {
236
  $notice = wp_kses_post( $this->upgrade_notice );
237
  echo "<div class='tribe-plugin-update-message'> $notice </div>";
238
  }
239
- }
236
  $notice = wp_kses_post( $this->upgrade_notice );
237
  echo "<div class='tribe-plugin-update-message'> $notice </div>";
238
  }
239
+ }
common/src/Tribe/Ajax/Dropdown.php CHANGED
@@ -243,4 +243,4 @@ class Tribe__Ajax__Dropdown {
243
  $message = __( 'The "%s" source is invalid and cannot be reached on "%s" instance.', 'tribe-common' );
244
  return $this->error( sprintf( $message, $name, __CLASS__ ) );
245
  }
246
- }
243
  $message = __( 'The "%s" source is invalid and cannot be reached on "%s" instance.', 'tribe-common' );
244
  return $this->error( sprintf( $message, $name, __CLASS__ ) );
245
  }
246
+ }
common/src/Tribe/Ajax/Operations.php CHANGED
@@ -19,4 +19,4 @@ class Tribe__Ajax__Operations {
19
  public function exit_data( $data = array() ) {
20
  exit( $data );
21
  }
22
- }
19
  public function exit_data( $data = array() ) {
20
  exit( $data );
21
  }
22
+ }
common/src/Tribe/Asset/Data.php CHANGED
@@ -54,4 +54,4 @@ class Tribe__Asset__Data {
54
 
55
  echo '/* ]]> */ </script>';
56
  }
57
- }
54
 
55
  echo '/* ]]> */ </script>';
56
  }
57
+ }
common/src/Tribe/Cache.php CHANGED
@@ -33,10 +33,26 @@ class Tribe__Cache implements ArrayAccess {
33
  public function set( $id, $value, $expiration = 0, $expiration_trigger = '' ) {
34
  $key = $this->get_id( $id, $expiration_trigger );
35
 
36
- if ( $expiration == self::NON_PERSISTENT ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  $group = 'tribe-events-non-persistent';
38
- $this->non_persistent_keys[] = $key;
39
  $expiration = 1;
 
 
 
40
  } else {
41
  $group = 'tribe-events';
42
  }
33
  public function set( $id, $value, $expiration = 0, $expiration_trigger = '' ) {
34
  $key = $this->get_id( $id, $expiration_trigger );
35
 
36
+ /**
37
+ * Filters the expiration for cache objects to provide the ability
38
+ * to make non-persistent objects be treated as persistent.
39
+ *
40
+ * @param int $expiration Cache expiration time.
41
+ * @param string $id Cache ID.
42
+ * @param mixed $value Cache value.
43
+ * @param string $expiration_trigger Action that triggers automatic expiration.
44
+ * @param string $key Unique cache key based on Cache ID and expiration trigger last run time.
45
+ *
46
+ * @since 4.8
47
+ */
48
+ $expiration = apply_filters( 'tribe_cache_expiration', $expiration, $id, $value, $expiration_trigger, $key );
49
+
50
+ if ( self::NON_PERSISTENT === $expiration ) {
51
  $group = 'tribe-events-non-persistent';
 
52
  $expiration = 1;
53
+
54
+ // Add so we know what group to use in the future.
55
+ $this->non_persistent_keys[] = $key;
56
  } else {
57
  $group = 'tribe-events';
58
  }
common/src/Tribe/Cache_Listener.php CHANGED
@@ -32,7 +32,7 @@
32
  */
33
  private function add_hooks() {
34
  add_action( 'save_post', array( $this, 'save_post' ), 0, 2 );
35
- add_action( 'updated_option', array( $this, 'update_last_save_post' ) );
36
  }
37
 
38
  /**
@@ -50,11 +50,15 @@
50
  /**
51
  * Run the caching functionality that is executed on saving tribe calendar options.
52
  *
53
- * @param string $option
54
  * @see 'updated_option'
 
 
 
 
55
  */
56
- public function update_last_save_post( $option ) {
57
- if ( $option != 'tribe_last_save_post' ) {
 
58
  $this->cache->set_last_occurrence( 'save_post' );
59
  }
60
  }
32
  */
33
  private function add_hooks() {
34
  add_action( 'save_post', array( $this, 'save_post' ), 0, 2 );
35
+ add_action( 'updated_option', array( $this, 'update_last_save_post' ), 10, 3 );
36
  }
37
 
38
  /**
50
  /**
51
  * Run the caching functionality that is executed on saving tribe calendar options.
52
  *
 
53
  * @see 'updated_option'
54
+ *
55
+ * @param string $option Name of the updated option.
56
+ * @param mixed $old_value The old option value.
57
+ * @param mixed $value The new option value.
58
  */
59
+ public function update_last_save_post( $option, $old_value, $value ) {
60
+
61
+ if ( $option === 'tribe_events_calendar_options' ) {
62
  $this->cache->set_last_occurrence( 'save_post' );
63
  }
64
  }
common/src/Tribe/Data.php CHANGED
@@ -232,4 +232,4 @@ class Tribe__Data implements ArrayAccess, Iterator {
232
  public function to_array() {
233
  return $this->get_data();
234
  }
235
- }
232
  public function to_array() {
233
  return $this->get_data();
234
  }
235
+ }
common/src/Tribe/Documentation/Swagger/Builder_Interface.php CHANGED
@@ -26,4 +26,4 @@ interface Tribe__Documentation__Swagger__Builder_Interface {
26
  * @return Tribe__Documentation__Swagger__Provider_Interface[]
27
  */
28
  public function get_registered_definition_providers();
29
- }
26
  * @return Tribe__Documentation__Swagger__Provider_Interface[]
27
  */
28
  public function get_registered_definition_providers();
29
+ }
common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php CHANGED
@@ -57,4 +57,4 @@ class Tribe__Documentation__Swagger__Date_Details_Definition_Provider
57
 
58
  return $documentation;
59
  }
60
- }
57
 
58
  return $documentation;
59
  }
60
+ }
common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php CHANGED
@@ -50,4 +50,4 @@ class Tribe__Documentation__Swagger__Image_Size_Definition_Provider
50
 
51
  return $documentation;
52
  }
53
- }
50
 
51
  return $documentation;
52
  }
53
+ }
common/src/Tribe/Documentation/Swagger/Provider_Interface.php CHANGED
@@ -14,4 +14,4 @@ interface Tribe__Documentation__Swagger__Provider_Interface {
14
  * @return array An array description of a Swagger supported component.
15
  */
16
  public function get_documentation();
17
- }
14
  * @return array An array description of a Swagger supported component.
15
  */
16
  public function get_documentation();
17
+ }
common/src/Tribe/Duplicate/Post.php CHANGED
@@ -440,4 +440,4 @@ class Tribe__Duplicate__Post {
440
  public function get_join_limit() {
441
  return $this->join_limit;
442
  }
443
- }
440
  public function get_join_limit() {
441
  return $this->join_limit;
442
  }
443
+ }
common/src/Tribe/Duplicate/Strategy/Base.php CHANGED
@@ -21,4 +21,4 @@ abstract class Tribe__Duplicate__Strategy__Base {
21
  protected function is_a_numeric_post_field( $key ) {
22
  return in_array( $key, array( 'ID', 'post_author', 'post_parent', 'menu_order', 'comment_count' ) );
23
  }
24
- }
21
  protected function is_a_numeric_post_field( $key ) {
22
  return in_array( $key, array( 'ID', 'post_author', 'post_parent', 'menu_order', 'comment_count' ) );
23
  }
24
+ }
common/src/Tribe/Duplicate/Strategy/Interface.php CHANGED
@@ -28,4 +28,4 @@ interface Tribe__Duplicate__Strategy__Interface {
28
  * @return string
29
  */
30
  public function where_custom_field( $key, $value, $table_alias );
31
- }
28
  * @return string
29
  */
30
  public function where_custom_field( $key, $value, $table_alias );
31
+ }
common/src/Tribe/Duplicate/Strategy/Like.php CHANGED
@@ -82,4 +82,4 @@ class Tribe__Duplicate__Strategy__Like
82
 
83
  return sprintf( '(%s)', implode( " \n\tAND ", $where_frags ) );
84
  }
85
- }
82
 
83
  return sprintf( '(%s)', implode( " \n\tAND ", $where_frags ) );
84
  }
85
+ }
common/src/Tribe/Duplicate/Strategy_Factory.php CHANGED
@@ -105,4 +105,4 @@ class Tribe__Duplicate__Strategy_Factory {
105
  public function set_strategy_map( array $strategy_map ) {
106
  $this->strategy_map = $strategy_map;
107
  }
108
- }
105
  public function set_strategy_map( array $strategy_map ) {
106
  $this->strategy_map = $strategy_map;
107
  }
108
+ }
common/src/Tribe/Editor.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Initialize Gutenberg editor blocks
4
+ *
5
+ * @since 4.8
6
+ */
7
+ class Tribe__Editor {
8
+
9
+ /**
10
+ * Meta key for flaging if a post is from classic editor
11
+ *
12
+ * @since 4.8
13
+ *
14
+ * @var string
15
+ */
16
+ public $key_flag_classic_editor = '_tribe_is_classic_editor';
17
+
18
+ /**
19
+ * Utility function to check if we should load the blocks or not based on two assumptions
20
+ *
21
+ * a) Is gutenberg active?
22
+ * b) Is the blocks editor active?
23
+ *
24
+ * @since 4.8
25
+ *
26
+ * @return bool
27
+ */
28
+ public function should_load_blocks() {
29
+ return (
30
+ $this->is_gutenberg_active()
31
+ || $this->is_wp_version()
32
+ )
33
+ && $this->is_blocks_editor_active();
34
+ }
35
+
36
+ /**
37
+ * Checks if we are on version 5.0-alpha or higher where we no longer have
38
+ * Gutenberg Project, but the Blocks Editor
39
+ *
40
+ * @since 4.8
41
+ *
42
+ * @return boolean
43
+ */
44
+ public function is_wp_version() {
45
+ global $wp_version;
46
+
47
+ return version_compare( $wp_version, '5.0-alpha', '>=' );
48
+ }
49
+
50
+ /**
51
+ * Checks if we have Gutenberg Project online, only useful while
52
+ * its a external plugin
53
+ *
54
+ * @since 4.8
55
+ *
56
+ * @return boolean
57
+ */
58
+ public function is_gutenberg_active() {
59
+ return function_exists( 'the_gutenberg_project' );
60
+ }
61
+
62
+ /**
63
+ * Checks if we have Editor Block active
64
+ *
65
+ * @since 4.8
66
+ *
67
+ * @return boolean
68
+ */
69
+ public function is_blocks_editor_active() {
70
+ return function_exists( 'register_block_type' ) && function_exists( 'unregister_block_type' );
71
+ }
72
+
73
+ /**
74
+ * Adds the required fields into the Events Post Type so that we can use Block Editor
75
+ *
76
+ * @since 4.8
77
+ *
78
+ * @param array $args Arguments used to setup the Post Type
79
+ *
80
+ * @return array
81
+ */
82
+ public function add_support( $args = array() ) {
83
+ // Make sure we have the Support argument and it's an array
84
+ if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) {
85
+ $args['supports'] = array();
86
+ }
87
+
88
+ // Add Editor Support
89
+ if ( ! in_array( 'editor', $args['supports'] ) ) {
90
+ $args['supports'][] = 'editor';
91
+ }
92
+
93
+ return $args;
94
+ }
95
+
96
+ /**
97
+ * Adds the required fields into the Post Type so that we can the Rest API to update it
98
+ *
99
+ * @since 4.8
100
+ *
101
+ * @param array $args Arguments used to setup the Post Type
102
+ *
103
+ * @return array
104
+ */
105
+ public function add_rest_support( $args = array() ) {
106
+ // Blocks Editor requires REST support
107
+ $args['show_in_rest'] = true;
108
+
109
+ // Make sure we have the Support argument and it's an array
110
+ if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) {
111
+ $args['supports'] = array();
112
+ }
113
+
114
+ if ( ! in_array( 'revisions', $args['supports'] ) ) {
115
+ $args['supports'][] = 'revisions';
116
+ }
117
+
118
+ // Add Custom Fields (meta) Support
119
+ if ( ! in_array( 'custom-fields', $args['supports'] ) ) {
120
+ $args['supports'][] = 'custom-fields';
121
+ }
122
+
123
+ // Add Post Title Support
124
+ if ( ! in_array( 'title', $args['supports'] ) ) {
125
+ $args['supports'][] = 'title';
126
+ }
127
+
128
+ // Add Post Excerpt Support
129
+ if ( ! in_array( 'excerpt', $args['supports'] ) ) {
130
+ $args['supports'][] = 'excerpt';
131
+ }
132
+
133
+ // Add Post Content Support
134
+ if ( ! in_array( 'editor', $args['supports'] ) ) {
135
+ $args['supports'][] = 'editor';
136
+ }
137
+
138
+ // Add Post Author Support
139
+ if ( ! in_array( 'author', $args['supports'] ) ) {
140
+ $args['supports'][] = 'author';
141
+ }
142
+
143
+ // Add Thumbnail Support
144
+ if ( ! in_array( 'thumbnail', $args['supports'] ) ) {
145
+ $args['supports'][] = 'thumbnail';
146
+ }
147
+
148
+ return $args;
149
+ }
150
+
151
+ /**
152
+ * classic_editor_replace is function that is created by the plugin:
153
+ *
154
+ * - https://wordpress.org/plugins/classic-editor/
155
+ *
156
+ * @since 4.8
157
+ *
158
+ * @return bool
159
+ */
160
+ public function is_classic_plugin_active() {
161
+ return function_exists( 'classic_editor_replace' );
162
+ }
163
+
164
+ /**
165
+ * Check if the setting `'classic-editor-replace'` is set to `replace` that option means to
166
+ * replace the gutenberg editor with the classic editor
167
+ *
168
+ * @since 4.8
169
+ *
170
+ * @return bool
171
+ */
172
+ public function is_classic_option_active() {
173
+ return 'replace' === get_option( 'classic-editor-replace' );
174
+ }
175
+
176
+ /**
177
+ * Detect if is the classic editor is forced activated via plugin or if it comes from a request
178
+ *
179
+ * @since 4.8
180
+ *
181
+ * @return bool
182
+ */
183
+ public function is_classic_editor() {
184
+ $disabled_by_plugin = $this->is_classic_plugin_active() && $this->is_classic_option_active();
185
+ $is_classic_editor_request = tribe_get_request_var( 'classic-editor', null );
186
+ return $is_classic_editor_request || $disabled_by_plugin;
187
+ }
188
+ }
common/src/Tribe/Editor/Assets.php ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Events Gutenberg Assets
4
+ *
5
+ * @since 4.8
6
+ */
7
+ class Tribe__Editor__Assets {
8
+ /**
9
+ *
10
+ * @since 4.8
11
+ *
12
+ * @return void
13
+ */
14
+ public function hook() {
15
+ add_action( 'wp_loaded', array( $this, 'register' ) );
16
+ }
17
+
18
+ /**
19
+ * Registers and Enqueues the assets
20
+ *
21
+ * @since 4.8
22
+ *
23
+ * @param string $key Which key we are checking against
24
+ *
25
+ * @return boolean
26
+ */
27
+ public function register() {
28
+
29
+ $plugin = Tribe__Main::instance();
30
+ /** @var Tribe__Editor__Configuration $editor_configuration */
31
+ $editor_configuration = tribe( 'common.editor.configuration' );
32
+
33
+ tribe_asset(
34
+ $plugin,
35
+ 'tribe-common-gutenberg-data',
36
+ 'app/data.js',
37
+ /**
38
+ * @todo revise this dependencies
39
+ */
40
+ array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
41
+ 'enqueue_block_editor_assets',
42
+ array(
43
+ 'in_footer' => false,
44
+ 'localize' => array(
45
+ array(
46
+ 'name' => 'tribe_editor_config',
47
+ /**
48
+ * Array used to setup the FE with custom variables from the BE
49
+ *
50
+ * @since 4.8
51
+ *
52
+ * @param array An array with the variables to be localized
53
+ */
54
+ 'data' => $editor_configuration->localize(),
55
+ ),
56
+ ),
57
+ 'priority' => 11,
58
+ )
59
+ );
60
+
61
+ tribe_asset(
62
+ $plugin,
63
+ 'tribe-common-gutenberg-utils',
64
+ 'app/utils.js',
65
+ /**
66
+ * @todo revise this dependencies
67
+ */
68
+ array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
69
+ 'enqueue_block_editor_assets',
70
+ array(
71
+ 'in_footer' => false,
72
+ 'localize' => array(),
73
+ 'priority' => 12,
74
+ )
75
+ );
76
+ tribe_asset(
77
+ $plugin,
78
+ 'tribe-common-gutenberg-store',
79
+ 'app/store.js',
80
+ /**
81
+ * @todo revise this dependencies
82
+ */
83
+ array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
84
+ 'enqueue_block_editor_assets',
85
+ array(
86
+ 'in_footer' => false,
87
+ 'localize' => array(),
88
+ 'priority' => 13,
89
+ )
90
+ );
91
+ tribe_asset(
92
+ $plugin,
93
+ 'tribe-common-gutenberg-icons',
94
+ 'app/icons.js',
95
+ /**
96
+ * @todo revise this dependencies
97
+ */
98
+ array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
99
+ 'enqueue_block_editor_assets',
100
+ array(
101
+ 'in_footer' => false,
102
+ 'localize' => array(),
103
+ 'priority' => 14,
104
+ )
105
+ );
106
+ tribe_asset(
107
+ $plugin,
108
+ 'tribe-common-gutenberg-hoc',
109
+ 'app/hoc.js',
110
+ /**
111
+ * @todo revise this dependencies
112
+ */
113
+ array(
114
+ 'react',
115
+ 'react-dom',
116
+ 'wp-components',
117
+ 'wp-api',
118
+ 'wp-api-request',
119
+ 'wp-blocks',
120
+ 'wp-i18n',
121
+ 'wp-element',
122
+ 'wp-editor',
123
+ ),
124
+ 'enqueue_block_editor_assets',
125
+ array(
126
+ 'in_footer' => false,
127
+ 'localize' => array(),
128
+ 'priority' => 15,
129
+ )
130
+ );
131
+ tribe_asset(
132
+ $plugin,
133
+ 'tribe-common-gutenberg-components',
134
+ 'app/components.js',
135
+ /**
136
+ * @todo revise this dependencies
137
+ */
138
+ array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
139
+ 'enqueue_block_editor_assets',
140
+ array(
141
+ 'in_footer' => false,
142
+ 'localize' => array(),
143
+ 'priority' => 16,
144
+ )
145
+ );
146
+ tribe_asset(
147
+ $plugin,
148
+ 'tribe-common-gutenberg-elements',
149
+ 'app/elements.js',
150
+ /**
151
+ * @todo revise this dependencies
152
+ */
153
+ array(
154
+ 'react',
155
+ 'react-dom',
156
+ 'wp-components',
157
+ 'wp-api',
158
+ 'wp-api-request',
159
+ 'wp-blocks',
160
+ 'wp-i18n',
161
+ 'wp-element',
162
+ 'wp-editor',
163
+ ),
164
+ 'enqueue_block_editor_assets',
165
+ array(
166
+ 'in_footer' => false,
167
+ 'localize' => array(),
168
+ 'priority' => 17,
169
+ )
170
+ );
171
+ /**
172
+ * @todo: figure out why element styles are loading for tickets but not events.
173
+ */
174
+ tribe_asset(
175
+ $plugin,
176
+ 'tribe-common-gutenberg-components',
177
+ 'app/components.js',
178
+ /**
179
+ * @todo revise this dependencies
180
+ */
181
+ array(
182
+ 'react',
183
+ 'react-dom',
184
+ 'wp-components',
185
+ 'wp-api',
186
+ 'wp-api-request',
187
+ 'wp-blocks',
188
+ 'wp-i18n',
189
+ 'wp-element',
190
+ 'wp-editor',
191
+ ),
192
+ 'enqueue_block_editor_assets',
193
+ array(
194
+ 'in_footer' => false,
195
+ 'localize' => array(),
196
+ 'priority' => 17,
197
+ )
198
+ );
199
+ tribe_asset(
200
+ $plugin,
201
+ 'tribe-common-gutenberg-elements-styles',
202
+ 'app/elements.css',
203
+ array(),
204
+ 'enqueue_block_editor_assets',
205
+ array(
206
+ 'in_footer' => false,
207
+ )
208
+ );
209
+ }
210
+ }
common/src/Tribe/Editor/Blocks/Abstract.php ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ abstract class Tribe__Editor__Blocks__Abstract
4
+ implements Tribe__Editor__Blocks__Interface {
5
+
6
+ /**
7
+ * Namespace for Blocks from tribe
8
+ *
9
+ * @since 4.8
10
+ *
11
+ * @var string
12
+ */
13
+ private $namespace = 'tribe';
14
+
15
+ /**
16
+ * Builds the name of the Block
17
+ *
18
+ * @since 4.8
19
+ *
20
+ * @return string
21
+ */
22
+ public function name() {
23
+ if ( false === strpos( $this->slug(), $this->namespace . '/' ) ) {
24
+ return $this->namespace . '/' . $this->slug();
25
+ } else {
26
+ return $this->slug();
27
+ }
28
+ }
29
+
30
+ /**
31
+ * Return the namespace to child or external sources
32
+ *
33
+ * @since 4.8
34
+ *
35
+ * @return string
36
+ */
37
+ public function get_namespace() {
38
+ return $this->namespace;
39
+ }
40
+
41
+ /*
42
+ * Return the block attributes
43
+ *
44
+ * @since 4.8
45
+ *
46
+ * @param array $attributes
47
+ *
48
+ * @return array
49
+ */
50
+ public function attributes( $params = array() ) {
51
+
52
+ // get the default attributes
53
+ $default_attributes = $this->default_attributes();
54
+
55
+ // parse the attributes with the default ones
56
+ $attributes = wp_parse_args(
57
+ $params,
58
+ $default_attributes
59
+ );
60
+
61
+ /**
62
+ * Filters the default attributes for the block
63
+ *
64
+ * @param array $attributes The attributes
65
+ * @param object $this The current object
66
+ */
67
+ $attributes = apply_filters( 'tribe_block_attributes_defaults_' . $this->slug(), $attributes, $this );
68
+
69
+ return $attributes;
70
+ }
71
+
72
+ /*
73
+ * Return the block default attributes
74
+ *
75
+ * @since 4.8
76
+ *
77
+ * @param array $attributes
78
+ *
79
+ * @return array
80
+ */
81
+ public function default_attributes() {
82
+
83
+ $attributes = array();
84
+
85
+ /**
86
+ * Filters the default attributes
87
+ *
88
+ * @param array $params The attributes
89
+ * @param object $this The current object
90
+ */
91
+ $attributes = apply_filters( 'tribe_block_attributes_defaults', $attributes, $this );
92
+
93
+ return $attributes;
94
+ }
95
+
96
+ /**
97
+ * Since we are dealing with a Dynamic type of Block we need a PHP method to render it
98
+ *
99
+ * @since 4.8
100
+ *
101
+ * @param array $attributes
102
+ *
103
+ * @return string
104
+ */
105
+ public function render( $attributes = array() ) {
106
+ if ( version_compare( phpversion(), '5.4', '>=' ) ) {
107
+ $json_string = json_encode( $attributes, JSON_PRETTY_PRINT );
108
+ } else {
109
+ $json_string = json_encode( $attributes );
110
+ }
111
+
112
+ return
113
+ '<pre class="tribe-placeholder-text-' . $this->name() . '">' .
114
+ 'Block Name: ' . $this->name() . "\n" .
115
+ 'Block Attributes: ' . "\n" . $json_string .
116
+ '</pre>';
117
+ }
118
+
119
+ /**
120
+ * Sends a valid JSON response to the AJAX request for the block contents
121
+ *
122
+ * @since 4.8
123
+ *
124
+ * @return void
125
+ */
126
+ public function ajax() {
127
+ wp_send_json_error( esc_attr__( 'Problem loading the block, please remove this block to restart.', 'tribe-common' ) );
128
+ }
129
+
130
+ /**
131
+ * Does the registration for PHP rendering for the Block, important due to been
132
+ * an dynamic Block
133
+ *
134
+ * @since 4.8
135
+ *
136
+ * @return void
137
+ */
138
+ public function register() {
139
+ $block_args = array(
140
+ 'render_callback' => array( $this, 'render' ),
141
+ );
142
+
143
+ register_block_type( $this->name(), $block_args );
144
+
145
+ add_action( 'wp_ajax_' . $this->get_ajax_action(), array( $this, 'ajax' ) );
146
+
147
+ $this->assets();
148
+ $this->hook();
149
+ }
150
+
151
+ /**
152
+ * Determine whether a post or content string has this block.
153
+ *
154
+ * This test optimizes for performance rather than strict accuracy, detecting
155
+ * the pattern of a block but not validating its structure. For strict accuracy
156
+ * you should use the block parser on post content.
157
+ *
158
+ * @since 4.8
159
+ *
160
+ * @see gutenberg_parse_blocks()
161
+ *
162
+ * @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object. Defaults to global $post.
163
+ *
164
+ * @return bool Whether the post has this block.
165
+ */
166
+ public function has_block( $post = null ) {
167
+ if ( ! is_numeric( $post ) ) {
168
+ $wp_post = get_post( $post );
169
+ if ( $wp_post instanceof WP_Post ) {
170
+ $post = $wp_post->post_content;
171
+ }
172
+ }
173
+
174
+ return false !== strpos( (string) $post, '<!-- wp:' . $this->name() );
175
+ }
176
+
177
+ /**
178
+ * Fetches the name for the block we are working with and converts it to the
179
+ * correct `wp_ajax_{$action}` string for us to Hook
180
+ *
181
+ * @since 4.8
182
+ *
183
+ * @return string
184
+ */
185
+ public function get_ajax_action() {
186
+ return str_replace( 'tribe/', 'tribe_editor_block_', $this->name() );
187
+ }
188
+
189
+ /**
190
+ * Used to include any Assets for the Block we are registering
191
+ *
192
+ * @since 4.8
193
+ *
194
+ * @return void
195
+ */
196
+ public function assets() {
197
+ }
198
+
199
+ /**
200
+ * Attach any particular hook for the specif block.
201
+ *
202
+ * @since 4.8
203
+ */
204
+ public function hook() {
205
+ }
206
+ }
207
+
common/src/Tribe/Editor/Blocks/Interface.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ interface Tribe__Editor__Blocks__Interface {
4
+
5
+ /**
6
+ * Which is the name/slug of this block
7
+ *
8
+ * @since 4.8
9
+ *
10
+ * @return string
11
+ */
12
+ public function slug();
13
+
14
+ /**
15
+ * Which is the name/slug of this block
16
+ *
17
+ * @since 4.8
18
+ *
19
+ * @return string
20
+ */
21
+ public function name();
22
+
23
+ /**
24
+ * What are the default attributes for this block
25
+ *
26
+ * @since 4.8
27
+ *
28
+ * @return array
29
+ */
30
+ public function default_attributes();
31
+
32
+ /**
33
+ * Since we are dealing with a Dynamic type of Block we need a PHP method to render it
34
+ *
35
+ * @since 4.8
36
+ *
37
+ * @param array $attributes
38
+ *
39
+ * @return string
40
+ */
41
+ public function render( $attributes = array() );
42
+
43
+ /**
44
+ * Does the registration for PHP rendering for the Block, important due to been
45
+ * an dynamic Block
46
+ *
47
+ * @since 4.8
48
+ *
49
+ * @return void
50
+ */
51
+ public function register();
52
+
53
+ /**
54
+ * Used to include any Assets for the Block we are registering
55
+ *
56
+ * @since 4.8
57
+ *
58
+ * @return void
59
+ */
60
+ public function assets();
61
+
62
+ /**
63
+ * Attach any specific hook to the current block.
64
+ *
65
+ * @since 4.8
66
+ *
67
+ * @return mixed
68
+ */
69
+ public function hook();
70
+ }
common/src/Tribe/Editor/Configuration.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class Tribe__Editor__Configuration
5
+ *
6
+ * setup the configuration variables used on the editor
7
+ *
8
+ * @since 4.8
9
+ */
10
+ class Tribe__Editor__Configuration implements Tribe__Editor__Configuration_Interface {
11
+ /**
12
+ * Localize variables that are part of common
13
+ *
14
+ * @since 4.8
15
+ *
16
+ * @return array
17
+ */
18
+ public function localize() {
19
+ $editor_config = array(
20
+ 'common' => array(
21
+ 'adminUrl' => admin_url(),
22
+ 'timeZone' => array(
23
+ 'showTimeZone' => false,
24
+ 'label' => $this->get_timezone_label(),
25
+ ),
26
+ 'rest' => array(
27
+ 'url' => get_rest_url(),
28
+ 'nonce' => array(
29
+ 'wp_rest' => wp_create_nonce( 'wp_rest' ),
30
+ ),
31
+ 'namespaces' => array(
32
+ 'core' => 'wp/v2',
33
+ ),
34
+ ),
35
+ 'dateSettings' => array( $this, 'get_date_settings' ),
36
+ 'constants' => array(
37
+ 'hideUpsell' => ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_HIDE_UPSELL ),
38
+ ),
39
+ 'countries' => tribe( 'languages.locations' )->get_countries(),
40
+ 'usStates' => Tribe__View_Helpers::loadStates(),
41
+ ),
42
+ );
43
+
44
+ /**
45
+ * Filter the default configuration used to localize variables
46
+ *
47
+ * @since 4.8
48
+ *
49
+ * array $editor_config An associative array with the configuration to be send into the client
50
+ */
51
+ return apply_filters( 'tribe_editor_config', $editor_config );
52
+ }
53
+
54
+
55
+ /**
56
+ * Returns the site timezone as a string
57
+ *
58
+ * @since 4.8
59
+ *
60
+ * @return string
61
+ */
62
+ public function get_timezone_label() {
63
+ return class_exists( 'Tribe__Timezones' )
64
+ ? Tribe__Timezones::wp_timezone_string()
65
+ : get_option( 'timezone_string', 'UTC' );
66
+ }
67
+
68
+ /**
69
+ * Get Localization data for Date settings
70
+ *
71
+ * @since 4.8
72
+ *
73
+ * @return array
74
+ */
75
+ public function get_date_settings() {
76
+ global $wp_locale;
77
+
78
+ return array(
79
+ 'l10n' => array(
80
+ 'locale' => get_user_locale(),
81
+ 'months' => array_values( $wp_locale->month ),
82
+ 'monthsShort' => array_values( $wp_locale->month_abbrev ),
83
+ 'weekdays' => array_values( $wp_locale->weekday ),
84
+ 'weekdaysShort' => array_values( $wp_locale->weekday_abbrev ),
85
+ 'meridiem' => (object) $wp_locale->meridiem,
86
+ 'relative' => array(
87
+ /* translators: %s: duration */
88
+ 'future' => __( '%s from now', 'default' ),
89
+ /* translators: %s: duration */
90
+ 'past' => __( '%s ago', 'default' ),
91
+ ),
92
+ ),
93
+ 'formats' => array(
94
+ 'time' => get_option( 'time_format', __( 'g:i a', 'default' ) ),
95
+ 'date' => get_option( 'date_format', __( 'F j, Y', 'default' ) ),
96
+ 'dateNoYear' => __( 'F j', 'default' ),
97
+ 'datetime' => __( 'F j, Y g:i a', 'default' ),
98
+ ),
99
+ 'timezone' => array(
100
+ 'offset' => get_option( 'gmt_offset', 0 ),
101
+ 'string' => $this->get_timezone_label(),
102
+ ),
103
+ );
104
+ }
105
+ }
common/src/Tribe/Editor/Configuration_Interface.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Interface Tribe__Editor__Configuration_Interface
5
+ *
6
+ * @since 4.8
7
+ */
8
+ interface Tribe__Editor__Configuration_Interface {
9
+ /**
10
+ * Return an array to be localize
11
+ *
12
+ * @since 4.8
13
+ *
14
+ * @return array
15
+ */
16
+ public function localize();
17
+ }
common/src/Tribe/Editor/Meta.php ADDED
@@ -0,0 +1,217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class Tribe__Editor__Meta
5
+ *
6
+ * @since 4.8
7
+ */
8
+ abstract class Tribe__Editor__Meta
9
+ implements Tribe__Editor__Meta_Interface {
10
+
11
+ /**
12
+ * Default definition for an attribute of type text
13
+ *
14
+ * @since 4.8
15
+ *
16
+ * @return array
17
+ */
18
+ protected function text() {
19
+ return array(
20
+ 'auth_callback' => array( $this, 'auth_callback' ),
21
+ 'sanitize_callback' => 'sanitize_text_field',
22
+ 'type' => 'string',
23
+ 'single' => true,
24
+ 'show_in_rest' => true,
25
+ );
26
+ }
27
+
28
+ /**
29
+ * Add arguments to escape a text area field
30
+ *
31
+ * @since 4.8
32
+ *
33
+ * @return array
34
+ */
35
+ protected function textarea() {
36
+ return array(
37
+ 'auth_callback' => array( $this, 'auth_callback' ),
38
+ 'sanitize_callback' => 'sanitize_textarea_field',
39
+ 'type' => 'string',
40
+ 'single' => true,
41
+ 'show_in_rest' => true,
42
+ );
43
+ }
44
+
45
+ /**
46
+ * Add arguments to escape a field of URL type
47
+ *
48
+ * @since 4.8
49
+ *
50
+ * @return array
51
+ */
52
+ protected function url() {
53
+ return array(
54
+ 'auth_callback' => array( $this, 'auth_callback' ),
55
+ 'sanitize_callback' => 'esc_url_raw',
56
+ 'type' => 'string',
57
+ 'single' => true,
58
+ 'show_in_rest' => true,
59
+ );
60
+ }
61
+
62
+ /**
63
+ * Default definition for an attribute of type text
64
+ *
65
+ * @since 4.8
66
+ *
67
+ * @return array
68
+ */
69
+ protected function numeric() {
70
+ return array(
71
+ 'auth_callback' => array( $this, 'auth_callback' ),
72
+ 'sanitize_callback' => 'absint',
73
+ 'type' => 'number',
74
+ 'single' => true,
75
+ 'show_in_rest' => true,
76
+ );
77
+ }
78
+
79
+ /***
80
+ * Default definition for an attribute of type boolean
81
+ *
82
+ * @since 4.8
83
+ *
84
+ * @return array
85
+ */
86
+ protected function boolean() {
87
+ return array(
88
+ 'auth_callback' => array( $this, 'auth_callback' ),
89
+ 'sanitize_callback' => array( $this, 'sanitize_boolean' ),
90
+ 'type' => 'boolean',
91
+ 'single' => true,
92
+ 'show_in_rest' => true,
93
+ );
94
+ }
95
+
96
+ /**
97
+ * Register a numeric type of array
98
+ *
99
+ * @since 4.8
100
+ *
101
+ * @return array
102
+ */
103
+ protected function numeric_array() {
104
+ return array(
105
+ 'description' => __( 'Numeric Array', 'tribe-common' ),
106
+ 'auth_callback' => array( $this, 'auth_callback' ),
107
+ 'sanitize_callback' => array( $this, 'sanitize_numeric_array' ),
108
+ 'type' => 'number',
109
+ 'single' => false,
110
+ 'show_in_rest' => true,
111
+ );
112
+ }
113
+
114
+ /**
115
+ * Register a text type of array
116
+ *
117
+ * @since 4.8
118
+ *
119
+ * @return array
120
+ */
121
+ protected function text_array() {
122
+ return array(
123
+ 'description' => __( 'Text Array', 'tribe-common' ),
124
+ 'auth_callback' => array( $this, 'auth_callback' ),
125
+ 'sanitize_callback' => array( $this, 'sanitize_text_array' ),
126
+ 'type' => 'string',
127
+ 'single' => false,
128
+ 'show_in_rest' => true,
129
+ );
130
+ }
131
+
132
+ /**
133
+ * Sanitize an array of text
134
+ *
135
+ * @since 4.8
136
+ *
137
+ * @param $value
138
+ *
139
+ * @return array
140
+ */
141
+ public function sanitize_text_array( $value ) {
142
+ if ( is_array( $value ) ) {
143
+ return array_map( 'sanitize_text_field', $value );
144
+ } else {
145
+ return sanitize_text_field( $value );
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Checks and sanitize a given value to a numeric array or a numeric string
151
+ *
152
+ * @since 4.8
153
+ *
154
+ * @param mixed $value Check agains this value
155
+ *
156
+ * @return array|bool|int
157
+ */
158
+ public function sanitize_numeric_array( $value ) {
159
+ if ( is_array( $value ) ) {
160
+ return wp_parse_id_list( $value );
161
+ } elseif ( is_numeric( $value ) ) {
162
+ return absint( $value );
163
+ } else {
164
+ return false;
165
+ }
166
+ }
167
+
168
+ /**
169
+ * Make sure sanitization on boolean does not triggered warnings when multiple values are passed
170
+ * to the function
171
+ *
172
+ * @since 4.8
173
+ *
174
+ * @param $value
175
+ *
176
+ * @return bool
177
+ */
178
+ public function sanitize_boolean( $value ) {
179
+ return boolval( $value );
180
+ }
181
+
182
+ /**
183
+ * Sanitize strings allowing the usage of white spaces before or after the separators, as
184
+ * - sanitize_text_field removes any whitespace
185
+ *
186
+ * @since 4.8
187
+ *
188
+ * @param $value
189
+ *
190
+ * @return mixed
191
+ */
192
+ public function sanitize_separator( $value ) {
193
+ return filter_var( $value, FILTER_SANITIZE_STRING );
194
+ }
195
+
196
+ /**
197
+ * Verify if the current user can edit or not this Post
198
+ *
199
+ * @since 4.8
200
+ *
201
+ * @param bool $allowed Whether the user can add the post meta. Default false.
202
+ * @param string $meta_key The meta key.
203
+ * @param int $post_id Post ID.
204
+ * @param int $user_id User ID.
205
+ * @param string $cap Capability name.
206
+ * @param array $caps User capabilities.
207
+ *
208
+ * @return boolean
209
+ */
210
+ public function auth_callback( $allowed, $meta_key, $post_id, $user_id, $cap, $caps ) {
211
+ $post = get_post( $post_id );
212
+ $post_type_obj = get_post_type_object( $post->post_type );
213
+ $current_user_can = current_user_can( $post_type_obj->cap->edit_post, $post_id );
214
+
215
+ return $current_user_can;
216
+ }
217
+ }
common/src/Tribe/Editor/Meta_Interface.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Interface Tribe__Editor__Meta_Interface
5
+ *
6
+ * @since 4.8
7
+ */
8
+ interface Tribe__Editor__Meta_Interface {
9
+ /**
10
+ * @since 4.8
11
+ *
12
+ * @return mixed
13
+ */
14
+ public function register();
15
+ }
common/src/Tribe/Editor/Provider.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Tribe__Editor__Provider extends tad_DI52_ServiceProvider {
4
+
5
+ /**
6
+ * Binds and sets up implementations.
7
+ *
8
+ * @since 4.8
9
+ *
10
+ */
11
+ public function register() {
12
+ // Setup to check if gutenberg is active
13
+ $this->container->singleton( 'editor', 'Tribe__Editor' );
14
+ $this->container->singleton( 'editor.utils', 'Tribe__Editor__Utils' );
15
+ $this->container->singleton( 'common.editor.configuration', 'Tribe__Editor__Configuration' );
16
+
17
+ if ( ! tribe( 'editor' )->should_load_blocks() ) {
18
+ return;
19
+ }
20
+
21
+ $this->container->singleton( 'editor.assets', 'Tribe__Editor__Assets', array( 'hook' ) );
22
+
23
+ $this->hook();
24
+
25
+ // Initialize the correct Singletons
26
+ tribe( 'editor.assets' );
27
+ }
28
+
29
+ /**
30
+ * Any hooking any class needs happen here.
31
+ *
32
+ * In place of delegating the hooking responsibility to the single classes they are all hooked here.
33
+ *
34
+ * @since 4.8
35
+ *
36
+ */
37
+ protected function hook() {
38
+
39
+ }
40
+
41
+ /**
42
+ * Binds and sets up implementations at boot time.
43
+ *
44
+ * @since 4.8
45
+ */
46
+ public function boot() {
47
+ // no ops
48
+ }
49
+ }
common/src/Tribe/Editor/Utils.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Events Gutenberg Utils
5
+ *
6
+ * @since 4.8
7
+ */
8
+ class Tribe__Editor__Utils {
9
+
10
+ /**
11
+ * Adds the required prefix of a tribe block with the wp: prefix as well and escaped.
12
+ *
13
+ * @since 4.8
14
+ *
15
+ * @param string $name
16
+ *
17
+ * @return string
18
+ */
19
+ public function to_tribe_block_name( $name = '' ) {
20
+ return 'wp:tribe\/' . $name;
21
+ }
22
+
23
+ /**
24
+ * Remove all invalid characters in string that are used to set the name of a block
25
+ *
26
+ * @since 4.8
27
+ *
28
+ * @param string $name
29
+ *
30
+ * @return string
31
+ */
32
+ public function to_block_name( $name = '' ) {
33
+ return preg_replace( '/[^a-zA-Z0-9-]/', '', $name );
34
+ }
35
+
36
+ /**
37
+ * Replaces the content of a post where a block is located, removes the space before and after on the same line where
38
+ * the block is located, it replaces the content of the block with an empty string
39
+ *
40
+ * @since 4.8
41
+ *
42
+ * @param $post_id
43
+ * @param string $block_name
44
+ *
45
+ * @return bool
46
+ */
47
+ public function remove_block( $post_id, $block_name = '' ) {
48
+ $content = get_post_field( 'post_content', $post_id );
49
+
50
+ if ( empty( $content ) ) {
51
+ return false;
52
+ }
53
+
54
+ $args = array(
55
+ 'ID' => $post_id,
56
+ 'post_content' => preg_replace(
57
+ '/^\s*<!-- ' . $block_name . ' .* \/-->\s*$/gm',
58
+ '',
59
+ $content
60
+ ),
61
+ );
62
+
63
+ return wp_update_post( $args );
64
+ }
65
+ }
common/src/Tribe/Exception.php CHANGED
@@ -87,4 +87,4 @@ class Tribe__Exception extends Exception {
87
 
88
  return true;
89
  }
90
- }
87
 
88
  return true;
89
  }
90
+ }
common/src/Tribe/Field_Conditional.php CHANGED
@@ -76,4 +76,4 @@ class Tribe__Field_Conditional {
76
  public function depends_on() {
77
  return $this->depends_on;
78
  }
79
- }
76
  public function depends_on() {
77
  return $this->depends_on;
78
  }
79
+ }
common/src/Tribe/Languages/Map_Interface.php CHANGED
@@ -29,4 +29,4 @@ interface Tribe__Languages__Map_Interface {
29
  * @return string|false The converted language code or `false` if the language code is not supported.
30
  */
31
  public function convert_language_code( $language_code );
32
- }
29
  * @return string|false The converted language code or `false` if the language code is not supported.
30
  */
31
  public function convert_language_code( $language_code );
32
+ }
common/src/Tribe/Languages/Recaptcha_Map.php CHANGED
@@ -122,4 +122,4 @@ class Tribe__Languages__Recaptcha_Map implements Tribe__Languages__Map_Interface
122
 
123
  return $converted_code ? $converted_code : false;
124
  }
125
- }
122
 
123
  return $converted_code ? $converted_code : false;
124
  }
125
+ }
common/src/Tribe/Log.php CHANGED
@@ -420,4 +420,4 @@ class Tribe__Log {
420
  $this->prioritized_levels[ $level_data[ 0 ] ] = $index;
421
  }
422
  }
423
- }
420
  $this->prioritized_levels[ $level_data[ 0 ] ] = $index;
421
  }
422
  }
423
+ }
common/src/Tribe/Log/Admin.php CHANGED
@@ -267,4 +267,4 @@ class Tribe__Log__Admin {
267
  protected function current_logger() {
268
  return tribe( 'logger' )->get_current_logger();
269
  }
270
- }
267
  protected function current_logger() {
268
  return tribe( 'logger' )->get_current_logger();
269
  }
270
+ }
common/src/Tribe/Log/Logger.php CHANGED
@@ -85,4 +85,4 @@ interface Tribe__Log__Logger {
85
  * whenever it is called.
86
  */
87
  public function cleanup();
88
- }
85
  * whenever it is called.
86
  */
87
  public function cleanup();
88
+ }
common/src/Tribe/Log/Null_Logger.php CHANGED
@@ -103,4 +103,4 @@ class Tribe__Log__Null_Logger implements Tribe__Log__Logger {
103
  public function cleanup() {
104
  // no-op
105
  }
106
- }
103
  public function cleanup() {
104
  // no-op
105
  }
106
+ }
common/src/Tribe/Main.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
- const VERSION = '4.7.23.1';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
@@ -541,6 +541,8 @@ class Tribe__Main {
541
 
542
  tribe_singleton( 'admin.notice.php.version', 'Tribe__Admin__Notice__Php_Version', array( 'hook' ) );
543
  tribe_singleton( 'admin.notice.marketing', 'Tribe__Admin__Notice__Marketing', array( 'hook' ) );
 
 
544
  }
545
 
546
  /************************
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.8';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
541
 
542
  tribe_singleton( 'admin.notice.php.version', 'Tribe__Admin__Notice__Php_Version', array( 'hook' ) );
543
  tribe_singleton( 'admin.notice.marketing', 'Tribe__Admin__Notice__Marketing', array( 'hook' ) );
544
+
545
+ tribe_register_provider( 'Tribe__Editor__Provider' );
546
  }
547
 
548
  /************************
common/src/Tribe/PUE/Notices.php CHANGED
@@ -197,6 +197,50 @@ class Tribe__PUE__Notices {
197
  }
198
  }
199
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  /**
201
  * Generate a notice listing any plugins for which license keys have been entered but
202
  * are invalid (in the sense of not matching PUE server records or having been revoked
@@ -208,6 +252,19 @@ class Tribe__PUE__Notices {
208
  public function render_invalid_key() {
209
  global $pagenow;
210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  if ( 'plugins.php' === $pagenow && ! empty( $this->notices[ self::EXPIRED_KEY ] ) ) {
212
  return;
213
  }
197
  }
198
  }
199
 
200
+ /**
201
+ * Select all products with empty license keys
202
+ * and format their names
203
+ *
204
+ * This information will be used to remove products
205
+ * with no license keys from $this->notices['invalid_key']
206
+ *
207
+ * @since 4.8
208
+ *
209
+ * @return array
210
+ */
211
+ public function select_empty_keys() {
212
+ /** @var $wpdb */
213
+ global $wpdb;
214
+
215
+ $sql = "
216
+ SELECT option_name
217
+ FROM {$wpdb->options}
218
+ WHERE option_name LIKE 'pue_install_key_%'
219
+ AND option_value=''
220
+ ";
221
+
222
+ $empty_keys = $wpdb->get_results( $sql, ARRAY_N );
223
+
224
+ $plugin_names = array(
225
+ 'pue_install_key_event_tickets_plus' => 'Event Tickets Plus',
226
+ 'pue_install_key_events_community' => 'The Events Calendar: Community Events',
227
+ 'pue_install_key_events_community_tickets' => 'The Events Calendar: Community Events Tickets',
228
+ 'pue_install_key_image_widget_plus' => 'Image Widget Plus',
229
+ 'pue_install_key_tribe_eventbrite' => 'The Events Calendar: Eventbrite Tickets',
230
+ 'pue_install_key_tribe_filterbar' => 'The Events Calendar: Filter Bar',
231
+ 'pue_install_key_event_aggregator' => 'Event Aggregator',
232
+ 'pue_install_key_events_calendar_pro' => 'The Events Calendar PRO',
233
+ );
234
+
235
+ $formatted_empty_keys = array();
236
+ foreach ( $empty_keys as $empty_key ) {
237
+ $empty_key = Tribe__Utils__Array::get( $empty_key, [ 0 ] );
238
+ $formatted_empty_keys[] = Tribe__Utils__Array::get( $plugin_names, $empty_key );
239
+ }
240
+
241
+ return $formatted_empty_keys;
242
+ }
243
+
244
  /**
245
  * Generate a notice listing any plugins for which license keys have been entered but
246
  * are invalid (in the sense of not matching PUE server records or having been revoked
252
  public function render_invalid_key() {
253
  global $pagenow;
254
 
255
+ $empty_keys = $this->select_empty_keys();
256
+
257
+ if ( empty( $empty_keys ) ) {
258
+ return;
259
+ }
260
+
261
+ // Remove the invalid_key notice for products with an empty license key
262
+ foreach ( $empty_keys as $empty_key ) {
263
+ if ( array_key_exists( $empty_key, $this->notices['invalid_key'] ) ) {
264
+ unset( $this->notices['invalid_key'][ $empty_key ] );
265
+ }
266
+ }
267
+
268
  if ( 'plugins.php' === $pagenow && ! empty( $this->notices[ self::EXPIRED_KEY ] ) ) {
269
  return;
270
  }
common/src/Tribe/Post_History.php CHANGED
@@ -131,4 +131,4 @@ class Tribe__Post_History {
131
 
132
  return $deleted;
133
  }
134
- }
131
 
132
  return $deleted;
133
  }
134
+ }
common/src/Tribe/REST/Endpoints/CREATE_Endpoint_Interface.php CHANGED
@@ -26,4 +26,4 @@ interface Tribe__REST__Endpoints__CREATE_Endpoint_Interface {
26
  * @return bool Whether the current user can post or not.
27
  */
28
  public function can_create();
29
- }
26
  * @return bool Whether the current user can post or not.
27
  */
28
  public function can_create();
29
+ }
common/src/Tribe/REST/Endpoints/READ_Endpoint_Interface.php CHANGED
@@ -19,4 +19,4 @@ interface Tribe__REST__Endpoints__READ_Endpoint_Interface {
19
  * @return array
20
  */
21
  public function READ_args();
22
- }
19
  * @return array
20
  */
21
  public function READ_args();
22
+ }
common/src/Tribe/REST/Endpoints/UPDATE_Endpoint_Interface.php CHANGED
@@ -25,4 +25,4 @@ interface Tribe__REST__Endpoints__UPDATE_Endpoint_Interface {
25
  * @return bool Whether the current user can update or not.
26
  */
27
  public function can_edit();
28
- }
25
  * @return bool Whether the current user can update or not.
26
  */
27
  public function can_edit();
28
+ }
common/src/Tribe/REST/Exceptions/Exception.php CHANGED
@@ -22,4 +22,4 @@ class Tribe__REST__Exceptions__Exception extends Exception {
22
  public function getStatus() {
23
  return $this->status;
24
  }
25
- }
22
  public function getStatus() {
23
  return $this->status;
24
  }
25
+ }
common/src/Tribe/REST/Headers/Base_Header.php CHANGED
@@ -16,4 +16,4 @@ abstract class Tribe__REST__Headers__Base_Header {
16
  public function __construct( Tribe__REST__Headers__Base_Interface $base ) {
17
  $this->base = $base;
18
  }
19
- }
16
  public function __construct( Tribe__REST__Headers__Base_Interface $base ) {
17
  $this->base = $base;
18
  }
19
+ }
common/src/Tribe/REST/Headers/Base_Interface.php CHANGED
@@ -46,4 +46,4 @@ interface Tribe__REST__Headers__Base_Interface {
46
  * @return string
47
  */
48
  public function get_api_origin_header();
49
- }
46
  * @return string
47
  */
48
  public function get_api_origin_header();
49
+ }
common/src/Tribe/REST/Headers/Disabled.php CHANGED
@@ -20,4 +20,4 @@ class Tribe__REST__Headers__Disabled extends Tribe__REST__Headers__Base_Header i
20
 
21
  header( $this->base->get_api_version_header() . ': disabled' );
22
  }
23
- }
20
 
21
  header( $this->base->get_api_version_header() . ': disabled' );
22
  }
23
+ }
common/src/Tribe/REST/Headers/Headers_Interface.php CHANGED
@@ -15,4 +15,4 @@ interface Tribe__REST__Headers__Headers_Interface {
15
  * Sends the REST API related headers.
16
  */
17
  public function send_header();
18
- }
15
  * Sends the REST API related headers.
16
  */
17
  public function send_header();
18
+ }
common/src/Tribe/REST/Headers/Supported.php CHANGED
@@ -46,4 +46,4 @@ class Tribe__REST__Headers__Supported extends Tribe__REST__Headers__Base_Header
46
  header( $this->base->get_api_root_header() . ': ' . esc_url_raw( $api_root ) );
47
  header( $this->base->get_api_origin_header() . ': ' . esc_url_raw( $this->base->get_rest_origin_url() ) );
48
  }
49
- }
46
  header( $this->base->get_api_root_header() . ': ' . esc_url_raw( $api_root ) );
47
  header( $this->base->get_api_origin_header() . ': ' . esc_url_raw( $this->base->get_rest_origin_url() ) );
48
  }
49
+ }
common/src/Tribe/REST/Headers/Unsupported.php CHANGED
@@ -36,4 +36,4 @@ class Tribe__REST__Headers__Unsupported extends Tribe__REST__Headers__Base_Heade
36
 
37
  header( $this->base->get_api_version_header() . ': unsupported' );
38
  }
39
- }
36
 
37
  header( $this->base->get_api_version_header() . ': unsupported' );
38
  }
39
+ }
common/src/Tribe/REST/Main.php CHANGED
@@ -146,4 +146,4 @@ abstract class Tribe__REST__Main {
146
  * @return string
147
  */
148
  abstract public function get_reference_url();
149
- }
146
  * @return string
147
  */
148
  abstract public function get_reference_url();
149
+ }
common/src/Tribe/REST/Messages_Interface.php CHANGED
@@ -27,4 +27,4 @@ interface Tribe__REST__Messages_Interface {
27
  * @return string The prefixed message slug.
28
  */
29
  public function prefix_message_slug( $message_slug );
30
- }
27
  * @return string The prefixed message slug.
28
  */
29
  public function prefix_message_slug( $message_slug );
30
+ }
common/src/Tribe/REST/Post_Repository.php CHANGED
@@ -100,4 +100,4 @@ class Tribe__REST__Post_Repository {
100
 
101
  return $cost_values;
102
  }
103
- }
100
 
101
  return $cost_values;
102
  }
103
+ }
common/src/Tribe/REST/Post_Repository_Interface.php CHANGED
@@ -11,4 +11,4 @@ interface Tribe__REST__Post_Repository_Interface {
11
  * @return array An array representation of the post.
12
  */
13
  public function get_data( $id );
14
- }
11
  * @return array An array representation of the post.
12
  */
13
  public function get_data( $id );
14
+ }
common/src/Tribe/REST/System.php CHANGED
@@ -11,4 +11,4 @@ class Tribe__REST__System {
11
  public function supports_wp_rest_api() {
12
  return function_exists( 'get_rest_url' );
13
  }
14
- }
11
  public function supports_wp_rest_api() {
12
  return function_exists( 'get_rest_url' );
13
  }
14
+ }
common/src/Tribe/Repository/Decorator.php CHANGED
@@ -358,4 +358,4 @@ abstract class Tribe__Repository__Decorator implements Tribe__Repository__Interf
358
  public function has_filter( $key, $value = null ) {
359
  return $this->decorated->has_filter( $key, $value );
360
  }
361
- }
358
  public function has_filter( $key, $value = null ) {
359
  return $this->decorated->has_filter( $key, $value );
360
  }
361
+ }
common/src/Tribe/Repository/Formatter_Interface.php CHANGED
@@ -21,4 +21,4 @@ interface Tribe__Repository__Formatter_Interface {
21
  * @return mixed
22
  */
23
  public function format_item( $id );
24
- }
21
  * @return mixed
22
  */
23
  public function format_item( $id );
24
+ }
common/src/Tribe/Repository/Implementation_Error.php CHANGED
@@ -8,4 +8,4 @@
8
  * Thrown to indicate an error in the repository extension by a developer; this
9
  * is meant to be used to help developers to extend the repository.
10
  */
11
- class Tribe__Repository__Implementation_Error extends Exception {}
8
  * Thrown to indicate an error in the repository extension by a developer; this
9
  * is meant to be used to help developers to extend the repository.
10
  */
11
+ class Tribe__Repository__Implementation_Error extends Exception {}
common/src/Tribe/Repository/Update_Interface.php CHANGED
@@ -55,4 +55,4 @@ interface Tribe__Repository__Update_Interface {
55
  * be (asynchronous) updated.
56
  */
57
  public function save( $sync = true );
58
- }
55
  * be (asynchronous) updated.
56
  */
57
  public function save( $sync = true );
58
+ }
common/src/Tribe/Rewrite.php CHANGED
@@ -295,4 +295,4 @@ class Tribe__Rewrite {
295
  return false;
296
  }
297
 
298
- }
295
  return false;
296
  }
297
 
298
+ }
common/src/Tribe/Support/Obfuscator.php CHANGED
@@ -65,4 +65,4 @@ class Tribe__Support__Obfuscator {
65
 
66
  return preg_replace( '/^(.{4}).*(.{4})$/', '$1' . str_repeat( '#', $length - 8 ) . '$2', $string_value );
67
  }
68
- }
65
 
66
  return preg_replace( '/^(.{4}).*(.{4})$/', '$1' . str_repeat( '#', $length - 8 ) . '$2', $string_value );
67
  }
68
+ }
common/src/Tribe/Support/Template_Checker.php CHANGED
@@ -273,4 +273,4 @@ class Tribe__Support__Template_Checker {
273
 
274
  return $outdated;
275
  }
276
- }
273
 
274
  return $outdated;
275
  }
276
+ }
common/src/Tribe/Support/Template_Checker_Report.php CHANGED
@@ -116,4 +116,4 @@ class Tribe__Support__Template_Checker_Report {
116
  . '<div class="template-updates-wrapper">' . join( ' ', self::$plugin_reports ) . '</div>';
117
  }
118
  }
119
- }
116
  . '<div class="template-updates-wrapper">' . join( ' ', self::$plugin_reports ) . '</div>';
117
  }
118
  }
119
+ }
common/src/Tribe/Tabbed_View.php CHANGED
@@ -378,4 +378,4 @@ class Tribe__Tabbed_View {
378
  public function get_default_template_path() {
379
  return Tribe__Main::instance()->plugin_path . '/src/admin-views/tabbed-view/tabbed-view.php';
380
  }
381
- }
378
  public function get_default_template_path() {
379
  return Tribe__Main::instance()->plugin_path . '/src/admin-views/tabbed-view/tabbed-view.php';
380
  }
381
+ }
common/src/Tribe/Template.php CHANGED
@@ -609,4 +609,4 @@ class Tribe__Template {
609
 
610
  return $html;
611
  }
612
- }
609
 
610
  return $html;
611
  }
612
+ }
common/src/Tribe/Terms.php CHANGED
@@ -51,4 +51,4 @@ class Tribe__Terms {
51
 
52
  return array_unique( $term_ids );
53
  }
54
- }
51
 
52
  return array_unique( $term_ids );
53
  }
54
+ }
common/src/Tribe/Utils/Callback.php CHANGED
@@ -106,4 +106,4 @@ class Tribe__Utils__Callback {
106
 
107
  return call_user_func_array( $item->callback, $args );
108
  }
109
- }
106
 
107
  return call_user_func_array( $item->callback, $args );
108
  }
109
+ }
common/src/Tribe/Utils/Coordinates_Provider.php CHANGED
@@ -131,4 +131,4 @@ class Tribe__Utils__Coordinates_Provider {
131
 
132
  return isset( $transient[ $address ] ) ? $transient[ $address ] : false;
133
  }
134
- }
131
 
132
  return isset( $transient[ $address ] ) ? $transient[ $address ] : false;
133
  }
134
+ }
common/src/Tribe/Utils/JSON.php CHANGED
@@ -35,4 +35,4 @@ class Tribe__Utils__JSON {
35
 
36
  return str_replace( $escapers, $replacements, $value );
37
  }
38
- }
35
 
36
  return str_replace( $escapers, $replacements, $value );
37
  }
38
+ }
common/src/Tribe/Validate.php CHANGED
@@ -549,4 +549,4 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
549
  }
550
 
551
  } // end class
552
- } // endif class_exists
549
  }
550
 
551
  } // end class
552
+ } // endif class_exists
common/src/Tribe/Validator/Base.php CHANGED
@@ -261,4 +261,4 @@ class Tribe__Validator__Base implements Tribe__Validator__Interface {
261
  public function list_to_array( $list ) {
262
  return Tribe__Utils__Array::list_to_array( $list );
263
  }
264
- }
261
  public function list_to_array( $list ) {
262
  return Tribe__Utils__Array::list_to_array( $list );
263
  }
264
+ }
common/src/functions/utils.php CHANGED
@@ -486,3 +486,33 @@ if ( ! function_exists( 'tribe_post_excerpt' ) ) {
486
  return wpautop( $excerpt );
487
  }
488
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
486
  return wpautop( $excerpt );
487
  }
488
  }
489
+
490
+ /**
491
+ * Create a function to mock the real function if the extension or Beta is not present.
492
+ *
493
+ *
494
+ */
495
+ if ( ! function_exists( 'has_blocks' ) ) {
496
+ /**
497
+ * Determine whether a post or content string has blocks.
498
+ *
499
+ * This test optimizes for performance rather than strict accuracy, detecting
500
+ * the pattern of a block but not validating its structure. For strict accuracy
501
+ * you should use the block parser on post content.
502
+ *
503
+ * @since 4.8
504
+ * @see https://github.com/WordPress/gutenberg/blob/73d9759116dde896931f4d152f186147a57889fe/lib/register.php#L313-L337s
505
+ *
506
+ * @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object. Defaults to global $post.
507
+ * @return bool Whether the post has blocks.
508
+ */
509
+ function has_blocks( $post = null ) {
510
+ if ( ! is_string( $post ) ) {
511
+ $wp_post = get_post( $post );
512
+ if ( $wp_post instanceof WP_Post ) {
513
+ $post = $wp_post->post_content;
514
+ }
515
+ }
516
+ return false !== strpos( (string) $post, '<!-- wp:' );
517
+ }
518
+ }
common/src/modules/components/form/index.js ADDED
@@ -0,0 +1 @@
 
1
+ export { default as Select } from './select';
common/src/modules/components/form/select/component.js ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { noop, partial, find } from 'lodash';
7
+ import classnames from 'classnames';
8
+ import {
9
+ Dropdown,
10
+ Dashicon,
11
+ } from '@wordpress/components';
12
+ import { ScrollTo, ScrollArea } from 'react-scroll-to';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { PreventBlockClose } from '@moderntribe/common/components';
18
+ import './style.pcss';
19
+
20
+ export default class Select extends PureComponent {
21
+ static propTypes = {
22
+ options: PropTypes.shape( {
23
+ label: PropTypes.string,
24
+ value: PropTypes.any,
25
+ } ),
26
+ onOptionClick: PropTypes.func.isRequired,
27
+ optionClassName: PropTypes.string,
28
+ isOpen: PropTypes.bool.isRequired,
29
+ value: PropTypes.any,
30
+ className: PropTypes.string,
31
+ }
32
+
33
+ static defaultProps = {
34
+ onOptionClick: noop,
35
+ isOpen: true,
36
+ optionClassName: '',
37
+ }
38
+
39
+ _onOptionClick = ( onClose, value, e ) => {
40
+ this.props.onOptionClick( value, e );
41
+ onClose();
42
+ }
43
+
44
+ get selected() {
45
+ return find( this.props.options, option => option.value === this.props.value );
46
+ }
47
+
48
+ get label() {
49
+ const selected = this.selected;
50
+ return selected && selected.label;
51
+ }
52
+
53
+ renderOptions = ( onClose ) => (
54
+ this.props.options.map( ( option ) => (
55
+ <button
56
+ className={ classnames(
57
+ 'tribe-common-form-select__options__option',
58
+ this.props.optionClassName
59
+ ) }
60
+ key={ option.value }
61
+ onClick={ partial( this._onOptionClick, onClose, option.value ) }
62
+ role="menuitem"
63
+ type="button"
64
+ value={ option.value }
65
+ >
66
+ { option.label }
67
+ </button>
68
+ ) )
69
+ )
70
+
71
+ renderToggle = ( { onToggle, isOpen } ) => (
72
+ <div className="tribe-common-form-select__toggle">
73
+ <button
74
+ type="button"
75
+ aria-expanded={ isOpen }
76
+ onClick={ onToggle }
77
+ >
78
+ <span>{ this.label }</span>
79
+ <Dashicon
80
+ className="btn--icon"
81
+ icon={ isOpen ? 'arrow-up' : 'arrow-down' }
82
+ />
83
+ </button>
84
+ </div>
85
+ )
86
+
87
+ renderContent = ( { onClose } ) => (
88
+ <ScrollTo>
89
+ { () => (
90
+ <PreventBlockClose>
91
+ <ScrollArea
92
+ role="menu"
93
+ className={ classnames( 'tribe-common-form-select__options' ) }
94
+ >
95
+ { this.renderOptions( onClose ) }
96
+ </ScrollArea>
97
+ </PreventBlockClose>
98
+ ) }
99
+ </ScrollTo>
100
+
101
+ );
102
+
103
+ render() {
104
+ return (
105
+ <Dropdown
106
+ className={ classnames( 'tribe-common-form-select',
107
+ this.props.className
108
+ ) }
109
+ position="bottom center"
110
+ contentClassName="tribe-common-form-select__content"
111
+ renderToggle={ this.renderToggle }
112
+ renderContent={ this.renderContent }
113
+ />
114
+ );
115
+ }
116
+ }
common/src/modules/components/form/select/index.js ADDED
@@ -0,0 +1 @@
 
1
+ export { default } from './component';
common/src/modules/components/form/select/style.pcss ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-common-form-select {
2
+ display: flex;
3
+
4
+ & > div {
5
+ flex: 0 0 auto;
6
+ min-width: 193px;
7
+ }
8
+
9
+ &__toggle {
10
+ background-color: #FFF;
11
+ border-radius: 2px;
12
+ border: 2px solid #EAEBEC;
13
+
14
+ & button {
15
+ align-items: center;
16
+ background-color: #FEFFFE;
17
+ border: none;
18
+ color: #545D66;
19
+ display: flex;
20
+ font-family: Helvetica, sans-serif;
21
+ font-size: 16px;
22
+ font-weight: 400;
23
+ font-weight: normal;
24
+ justify-content: center;
25
+ line-height: 1.5;
26
+ padding: 6px 10px;
27
+ text-align: left;
28
+ text-decoration: none;
29
+ width: 100%;
30
+
31
+ & > span {
32
+ flex: 1;
33
+ }
34
+ }
35
+ }
36
+
37
+ &__options {
38
+
39
+ &__option {
40
+ background: transparent;
41
+ border: 0;
42
+ color: #555d66;
43
+ cursor: pointer;
44
+ display: block;
45
+ line-height: 20px;
46
+ padding: 5px 12px;
47
+ text-align: left;
48
+ width: 100%;
49
+
50
+ &:hover {
51
+ background-color: #009fd4;
52
+ color: #fff;
53
+ }
54
+ }
55
+ }
56
+ }
common/src/modules/components/index.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ /* eslint-disable max-len */
2
+ export { default as PluginBlockHooks } from '@moderntribe/common/components/plugin-block-hooks';
3
+ export { default as PreventBlockClose } from '@moderntribe/common/components/prevent-block-close';
4
+ export * from './form';
5
+
common/src/modules/components/plugin-block-hooks/__tests__/__snapshots__/plugin-block-hooks.spec.js.snap ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`PluginBlockHooks should match snapshot 1`] = `
4
+ <div
5
+ className="tribe-common__plugin-block-hook"
6
+ >
7
+ <InnerBlocks
8
+ template={
9
+ Array [
10
+ Array [
11
+ "tribe/event-datetime",
12
+ Object {},
13
+ ],
14
+ Array [
15
+ "tribe/event-pro-recurring",
16
+ Object {},
17
+ ],
18
+ Array [
19
+ "tribe/event-pro-exclusion",
20
+ Object {},
21
+ ],
22
+ ]
23
+ }
24
+ templateInsertUpdatesSelection={false}
25
+ />
26
+ </div>
27
+ `;
28
+
29
+ exports[`PluginBlockHooks should not hook in unregistered blocks 1`] = `
30
+ <div
31
+ className="tribe-common__plugin-block-hook"
32
+ >
33
+ <InnerBlocks
34
+ template={
35
+ Array [
36
+ Array [
37
+ "tribe/event-datetime",
38
+ Object {},
39
+ ],
40
+ Array [
41
+ "tribe/event-pro-recurring",
42
+ Object {},
43
+ ],
44
+ Array [
45
+ "tribe/event-pro-exclusion",
46
+ Object {},
47
+ ],
48
+ ]
49
+ }
50
+ templateInsertUpdatesSelection={false}
51
+ />
52
+ </div>
53
+ `;
54
+
55
+ exports[`PluginBlockHooks should only render events templates 1`] = `
56
+ <div
57
+ className="tribe-common__plugin-block-hook"
58
+ >
59
+ <InnerBlocks
60
+ template={
61
+ Array [
62
+ Array [
63
+ "tribe/event-datetime",
64
+ Object {},
65
+ ],
66
+ ]
67
+ }
68
+ templateInsertUpdatesSelection={false}
69
+ />
70
+ </div>
71
+ `;
72
+
73
+ exports[`PluginBlockHooks should only render events-pro templates 1`] = `
74
+ <div
75
+ className="tribe-common__plugin-block-hook"
76
+ >
77
+ <InnerBlocks
78
+ template={
79
+ Array [
80
+ Array [
81
+ "tribe/event-pro-recurring",
82
+ Object {},
83
+ ],
84
+ Array [
85
+ "tribe/event-pro-exclusion",
86
+ Object {},
87
+ ],
88
+ ]
89
+ }
90
+ templateInsertUpdatesSelection={false}
91
+ />
92
+ </div>
93
+ `;
94
+
95
+ exports[`PluginBlockHooks should recursively hook blocks 1`] = `
96
+ <div
97
+ className="tribe-common__plugin-block-hook"
98
+ >
99
+ <InnerBlocks
100
+ template={
101
+ Array [
102
+ Array [
103
+ "tribe/event-pro-recurring",
104
+ Object {},
105
+ ],
106
+ Array [
107
+ "tribe/event-cool-container1",
108
+ Object {},
109
+ Array [
110
+ Array [
111
+ "tribe/event-pro-recurring",
112
+ Object {},
113
+ ],
114
+ Array [
115
+ "tribe/event-cool-container2",
116
+ Object {},
117
+ Array [
118
+ Array [
119
+ "tribe/event-pro-recurring",
120
+ Object {},
121
+ ],
122
+ ],
123
+ ],
124
+ ],
125
+ ],
126
+ ]
127
+ }
128
+ templateInsertUpdatesSelection={false}
129
+ />
130
+ </div>
131
+ `;
common/src/modules/components/plugin-block-hooks/__tests__/plugin-block-hooks.spec.js ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+
7
+ /**
8
+ * Internal Dependencies
9
+ */
10
+ import PluginBlockHooks from '../component';
11
+
12
+ jest.mock( '@wordpress/editor', () => ( {
13
+ InnerBlocks: 'InnerBlocks',
14
+ } ) );
15
+ jest.mock( '@wordpress/data', () => ( {
16
+ select: jest.fn( () => ( {
17
+ getBlockTypes: jest.fn( () => ( [
18
+ { name: 'tribe/event-datetime' },
19
+ { name: 'tribe/event-pro-recurring' },
20
+ { name: 'tribe/event-pro-exclusion' },
21
+ { name: 'tribe/event-cool-container1' },
22
+ { name: 'tribe/event-cool-container2' },
23
+ ] ) ),
24
+ } ) ),
25
+ } ) );
26
+
27
+ describe( 'PluginBlockHooks', () => {
28
+ let props;
29
+ beforeEach( () => {
30
+ props = {
31
+ plugins: [ 'events', 'events-pro', 'events-cool' ],
32
+ pluginTemplates: {
33
+ 'events': [
34
+ [ 'tribe/event-datetime', {}],
35
+ ],
36
+ 'events-pro': [
37
+ [ 'tribe/event-pro-recurring', {}],
38
+ [ 'tribe/event-pro-exclusion', {}],
39
+ ],
40
+ },
41
+ };
42
+ } );
43
+
44
+ test( 'should match snapshot', () => {
45
+ const component = renderer.create(
46
+ <PluginBlockHooks { ...props } />
47
+ );
48
+ expect( component.toJSON() ).toMatchSnapshot();
49
+ } );
50
+ test( 'should only render events templates', () => {
51
+ props.plugins = props.plugins.filter( plugin => plugin === 'events' );
52
+ const component = renderer.create(
53
+ <PluginBlockHooks { ...props } />
54
+ );
55
+ expect( component.toJSON() ).toMatchSnapshot();
56
+ } );
57
+ test( 'should only render events-pro templates', () => {
58
+ props.plugins = props.plugins.filter( plugin => plugin === 'events-pro' );
59
+ const component = renderer.create(
60
+ <PluginBlockHooks { ...props } />
61
+ );
62
+ expect( component.toJSON() ).toMatchSnapshot();
63
+ } );
64
+ test( 'should not hook in unregistered blocks', () => {
65
+ props.pluginTemplates.events.push( [ 'i-dont-exist', {}] );
66
+ const component = renderer.create(
67
+ <PluginBlockHooks { ...props } />
68
+ );
69
+ expect( component.toJSON() ).toMatchSnapshot();
70
+ } );
71
+ test( 'should recursively hook blocks', () => {
72
+ delete props.pluginTemplates.events;
73
+ delete props.pluginTemplates[ 'events-pro' ];
74
+ props.pluginTemplates[ 'events-cool' ] = [
75
+ [ 'tribe/event-pro-recurring', {}],
76
+ [ 'tribe/event-cool-container1', {}, [
77
+ [ 'tribe/event-pro-recurring', {}],
78
+ [ 'tribe/event-cool-container2', {}, [
79
+ [ 'tribe/event-pro-recurring', {}],
80
+ [ 'dont-register-me', {}],
81
+ ] ],
82
+ [ 'dont-register-2me', {}],
83
+ ],
84
+ [ 'dont-register-me', {}],
85
+ ],
86
+ ];
87
+ const component = renderer.create(
88
+ <PluginBlockHooks { ...props } />
89
+ );
90
+ expect( component.toJSON() ).toMatchSnapshot();
91
+ } );
92
+ } );
common/src/modules/components/plugin-block-hooks/component.js ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { map, reduce, includes, isArray } from 'lodash';
7
+ import { InnerBlocks } from '@wordpress/editor';
8
+ import { select } from '@wordpress/data';
9
+ import './style.pcss';
10
+
11
+ /**
12
+ * Allows for dynamic plugin templates based on current plugins available
13
+ * utilizing InnerBlocks api
14
+ *
15
+ * @export
16
+ * @class PluginBlockHooks
17
+ * @extends {PureComponent}
18
+ */
19
+ export default class PluginBlockHooks extends PureComponent {
20
+ static propTypes = {
21
+ allowedBlocks: PropTypes.arrayOf( PropTypes.string ),
22
+ layouts: PropTypes.oneOfType( [
23
+ PropTypes.object,
24
+ PropTypes.arrayOf( PropTypes.object ),
25
+ ] ),
26
+ /**
27
+ * Plugins to be used
28
+ */
29
+ plugins: PropTypes.arrayOf( PropTypes.string ).isRequired,
30
+ /**
31
+ * Plugin template structure needed to properly
32
+ * register new templates for each plugin
33
+ *
34
+ *
35
+ * ```js
36
+ * {
37
+ * 'events': [
38
+ * [ 'tribe/event-datetime', {}],
39
+ * ],
40
+ * 'events-pro': [
41
+ * [ 'tribe/event-pro-recurring', {}],
42
+ * [ 'tribe/event-pro-exclusion', {}],
43
+ * ],
44
+ * 'events-cool': [
45
+ * [ 'tribe/event-cool-container', {}, [
46
+ * [ 'tribe/event-cool-column', {}],
47
+ * [ 'tribe/event-cool-column', {}],
48
+ * ]]
49
+ * ],
50
+ * }
51
+ * ```
52
+ */
53
+ pluginTemplates: PropTypes.objectOf( PropTypes.arrayOf( PropTypes.array ) ),
54
+ templateInsertUpdatesSelection: PropTypes.bool.isRequired,
55
+ templateLock: PropTypes.oneOf( [
56
+ 'all',
57
+ 'insert',
58
+ false,
59
+ ] ),
60
+ }
61
+
62
+ static defaultProps = {
63
+ templateInsertUpdatesSelection: false,
64
+ }
65
+
66
+ /**
67
+ * Registered block names from core
68
+ *
69
+ * @readonly
70
+ * @memberof PluginBlockHooks
71
+ * @returns {Array} block names
72
+ */
73
+ get registeredBlockNames() {
74
+ const blockTypes = select( 'core/blocks' ).getBlockTypes();
75
+ return map( blockTypes, block => block.name );
76
+ }
77
+
78
+ /**
79
+ * Template for InnerBlocks
80
+ *
81
+ * @readonly
82
+ * @memberof PluginBlockHooks
83
+ * @returns {Array} template
84
+ */
85
+ get template() {
86
+ const blockNames = this.registeredBlockNames;
87
+ return this.props.plugins.reduce( ( acc, plugin ) => {
88
+ const pluginTemplate = this.props.pluginTemplates[ plugin ];
89
+ if ( pluginTemplate ) {
90
+ // Block needs to be registered, otherwise it's dropped
91
+ const blockTemplates = this.filterPluginTemplates( blockNames, pluginTemplate );
92
+ return [
93
+ ...acc,
94
+ ...blockTemplates,
95
+ ];
96
+ }
97
+ return acc;
98
+ }, [] );
99
+ }
100
+
101
+ /**
102
+ * Recursively filters out unregistered blocks
103
+ *
104
+ * @param {Array} blockNames block names currently registered
105
+ * @param {Array} pluginTemplate Template for plugins
106
+ * @returns {Array} Array of plugin template
107
+ */
108
+ filterPluginTemplates( blockNames, pluginTemplate ) {
109
+ return reduce( pluginTemplate, ( acc, [ name, attributes, nestedBlockTemplates ] ) => {
110
+ if ( includes( blockNames, name ) ) {
111
+ const blockTemplate = isArray( nestedBlockTemplates )
112
+ ? [ name, attributes, /* Recursive call */ this.filterPluginTemplates( blockNames, nestedBlockTemplates ) ] // eslint-disable-line max-len
113
+ : [ name, attributes ];
114
+
115
+ return [
116
+ ...acc,
117
+ blockTemplate,
118
+ ];
119
+ }
120
+
121
+ return acc;
122
+ }, [] );
123
+ }
124
+
125
+ render() {
126
+ return (
127
+ <div className="tribe-common__plugin-block-hook">
128
+ <InnerBlocks
129
+ allowedBlocks={ this.props.allowedBlocks }
130
+ layouts={ this.props.layouts }
131
+ template={ this.template }
132
+ templateInsertUpdatesSelection={ this.props.templateInsertUpdatesSelection }
133
+ templateLock={ this.props.templateLock }
134
+ />
135
+ </div>
136
+ );
137
+ }
138
+ }
common/src/modules/components/plugin-block-hooks/container.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { connect } from 'react-redux';
5
+ import { compose } from 'redux';
6
+
7
+ /**
8
+ * Internal Dependencies
9
+ */
10
+ import { selectors } from '@moderntribe/common/data/plugins';
11
+ import { withStore } from '@moderntribe/common/hoc';
12
+ import PluginBlockHooks from './component';
13
+
14
+ const mapStateToProps = ( state, ownProps ) => ( {
15
+ plugins: selectors.getPlugins( state ),
16
+ } );
17
+
18
+ export default compose(
19
+ withStore(),
20
+ connect( mapStateToProps ),
21
+ )( PluginBlockHooks );
common/src/modules/components/plugin-block-hooks/index.js ADDED
@@ -0,0 +1 @@
 
1
+ export { default } from './container';
common/src/modules/components/plugin-block-hooks/style.pcss ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-common__plugin-block-hook {
2
+
3
+ & .editor-inner-blocks {
4
+
5
+ & .editor-block-list__layout {
6
+ margin: 0;
7
+
8
+ & .editor-block-list__block {
9
+ margin: 0;
10
+ max-width: 100% !important;
11
+ padding: 0;
12
+
13
+ &.is-selected > .editor-block-list__block-edit:before,
14
+ &.is-selected-parent > .editor-block-list__block-edit:before,
15
+ &.is-hovered > .editor-block-list__block-edit:before {
16
+ outline: none;
17
+ }
18
+
19
+ & .editor-block-list__block-edit {
20
+ margin: 0;
21
+
22
+ &:before {
23
+ outline: none;
24
+ }
25
+
26
+ & .editor-block-contextual-toolbar {
27
+ display: none;
28
+ }
29
+ }
30
+
31
+ {
32
+ outline: none;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
common/src/modules/components/prevent-block-close/__tests__/component.spec.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+ import PreventBlockClose from '../component';
3
+
4
+ describe( 'PreventBlockClose', () => {
5
+ test( 'should match snapshot', () => {
6
+ const component = mount(
7
+ <PreventBlockClose>
8
+ <span>Test children</span>
9
+ </PreventBlockClose>
10
+ );
11
+ const child = component.find( 'span' );
12
+ expect( child ).toHaveLength( 1 );
13
+ expect( child.text() ).toEqual( "Test children" );
14
+ } );
15
+ } );
common/src/modules/components/prevent-block-close/component.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+
7
+ /**
8
+ * Internal Dependencies
9
+ */
10
+ import { intercept, EVENT_NAMESPACE } from '@moderntribe/common/hoc/with-block-closer';
11
+
12
+ export default class PreventBlockClose extends PureComponent {
13
+ static propTypes = {
14
+ children: PropTypes.node.isRequired,
15
+ }
16
+
17
+ nodeRef = React.createRef();
18
+
19
+ componentDidMount() {
20
+ this.node.addEventListener( EVENT_NAMESPACE, intercept );
21
+ }
22
+
23
+ componentWillUnmount() {
24
+ this.node.removeEventListener( EVENT_NAMESPACE, intercept );
25
+ }
26
+
27
+ get node() {
28
+ return this.nodeRef.current;
29
+ }
30
+
31
+ render() {
32
+ return (
33
+ <div ref={ this.nodeRef }>
34
+ { this.props.children }
35
+ </div>
36
+ );
37
+ }
38
+ }
common/src/modules/components/prevent-block-close/index.js ADDED
@@ -0,0 +1 @@
 
1
+ export { default } from './component';
common/src/modules/data/__tests__/utils.test.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
5
+
6
+ describe( 'prefix', () => {
7
+ it( 'Should return the prefix', () => {
8
+ expect( PREFIX_COMMON_STORE ).toBe('@@MT/COMMON');
9
+ } );
10
+ } );
common/src/modules/data/editor/post-types.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ export const EVENT = 'tribe_events';
2
+ export const VENUE = 'tribe_venue';
3
+ export const ORGANIZER = 'tribe_organizer';
common/src/modules/data/forms/__tests__/__snapshots__/actions.test.js.snap ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`[STORE] - Form actions Add volatile action 1`] = `
4
+ Object {
5
+ "payload": Object {
6
+ "id": 20,
7
+ },
8
+ "type": "@@MT/COMMON/ADD_VOLATILE_ID",
9
+ }
10
+ `;
11
+
12
+ exports[`[STORE] - Form actions Clear form action 1`] = `
13
+ Object {
14
+ "payload": Object {
15
+ "id": 20,
16
+ },
17
+ "type": "@@MT/COMMON/CLEAR_FORM",
18
+ }
19
+ `;
20
+
21
+ exports[`[STORE] - Form actions Create draft entry 1`] = `
22
+ Object {
23
+ "payload": Object {
24
+ "fields": Object {
25
+ "title": "Modern Tribe",
26
+ },
27
+ "id": 20,
28
+ },
29
+ "type": "@@MT/COMMON/CREATE_FORM_DRAFT",
30
+ }
31
+ `;
32
+
33
+ exports[`[STORE] - Form actions Edit the entry action 1`] = `
34
+ Object {
35
+ "payload": Object {
36
+ "fields": Object {
37
+ "title": "Tribe",
38
+ },
39
+ "id": 20,
40
+ },
41
+ "type": "@@MT/COMMON/EDIT_FORM_ENTRY",
42
+ }
43
+ `;
44
+
45
+ exports[`[STORE] - Form actions Register form action 1`] = `
46
+ Object {
47
+ "payload": Object {
48
+ "id": 20,
49
+ "type": "tribe_organizers",
50
+ },
51
+ "type": "@@MT/COMMON/ADD_FORM",
52
+ }
53
+ `;
54
+
55
+ exports[`[STORE] - Form actions Remove volatile action 1`] = `
56
+ Object {
57
+ "payload": Object {
58
+ "id": 20,
59
+ },
60
+ "type": "@@MT/COMMON/REMOVE_VOLATILE_ID",
61
+ }
62
+ `;
63
+
64
+ exports[`[STORE] - Form actions Set saving action 1`] = `
65
+ Object {
66
+ "payload": Object {
67
+ "id": 20,
68
+ "saving": true,
69
+ },
70
+ "type": "@@MT/COMMON/SET_SAVING_FORM",
71
+ }
72
+ `;
73
+
74
+ exports[`[STORE] - Form actions Set saving action 2`] = `
75
+ Object {
76
+ "payload": Object {
77
+ "id": 20,
78
+ "saving": false,
79
+ },
80
+ "type": "@@MT/COMMON/SET_SAVING_FORM",
81
+ }
82
+ `;
83
+
84
+ exports[`[STORE] - Form actions Set submit form 1`] = `
85
+ Object {
86
+ "payload": Object {
87
+ "id": 20,
88
+ },
89
+ "type": "@@MT/COMMON/SUBMIT_FORM",
90
+ }
91
+ `;
92
+
93
+ exports[`[STORE] - form thunk actions Maybe remove entry action with details 1`] = `
94
+ Array [
95
+ Object {
96
+ "meta": Object {
97
+ "actions": Object {
98
+ "success": [Function],
99
+ },
100
+ "path": "tribe_venue/21",
101
+ },
102
+ "type": "@@MT/COMMON/WP_REQUEST",
103
+ },
104
+ ]
105
+ `;
106
+
107
+ exports[`[STORE] - form thunk actions Maybe remove entry action without details 1`] = `Array []`;
108
+
109
+ exports[`[STORE] - form thunk actions Send the form action when creating 1`] = `
110
+ Array [
111
+ Object {
112
+ "meta": Object {
113
+ "actions": Object {
114
+ "error": [Function],
115
+ "start": [Function],
116
+ "success": [Function],
117
+ },
118
+ "params": Object {
119
+ "body": "{\\"title\\":\\"Modern Tribe\\"}",
120
+ "method": "POST",
121
+ },
122
+ "path": "tribe_organizer",
123
+ },
124
+ "type": "@@MT/COMMON/WP_REQUEST",
125
+ },
126
+ ]
127
+ `;
128
+
129
+ exports[`[STORE] - form thunk actions Send the form when editing 1`] = `
130
+ Array [
131
+ Object {
132
+ "meta": Object {
133
+ "actions": Object {
134
+ "error": [Function],
135
+ "start": [Function],
136
+ "success": [Function],
137
+ },
138
+ "params": Object {
139
+ "body": "{\\"title\\":\\"Tribe\\"}",
140
+ "method": "PUT",
141
+ },
142
+ "path": "tribe_venue/21",
143
+ },
144
+ "type": "@@MT/COMMON/WP_REQUEST",
145
+ },
146
+ ]
147
+ `;
common/src/modules/data/forms/__tests__/actions.test.js ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import configureStore from 'redux-mock-store';
5
+ import thunk from 'redux-thunk';
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { actions } from '@moderntribe/common/data/forms';
10
+
11
+ const middlewares = [ thunk ];
12
+ const mockStore = configureStore( middlewares );
13
+
14
+ describe( '[STORE] - Form actions', () => {
15
+ test( 'Register form action', () => {
16
+ expect( actions.registerForm( 20, 'tribe_organizers' ) ).toMatchSnapshot();
17
+ } );
18
+
19
+ test( 'Create draft entry', () => {
20
+ expect( actions.createDraft( 20, { title: 'Modern Tribe' } ) ).toMatchSnapshot();
21
+ } );
22
+
23
+ test( 'Edit the entry action', () => {
24
+ expect( actions.editEntry( 20, { title: 'Tribe' } ) ).toMatchSnapshot();
25
+ } );
26
+
27
+ test( 'Clear form action', () => {
28
+ expect( actions.clearForm( 20 ) ).toMatchSnapshot();
29
+ } );
30
+
31
+ test( 'Set submit form', () => {
32
+ expect( actions.setSubmit( 20 ) ).toMatchSnapshot();
33
+ } );
34
+
35
+ test( 'Set saving action', () => {
36
+ expect( actions.setSaving( 20, true ) ).toMatchSnapshot();
37
+ expect( actions.setSaving( 20, false ) ).toMatchSnapshot();
38
+ } );
39
+
40
+ test( 'Add volatile action', () => {
41
+ expect( actions.addVolatile( 20 ) ).toMatchSnapshot();
42
+ } );
43
+
44
+ test( 'Remove volatile action', () => {
45
+ expect( actions.removeVolatile( 20 ) ).toMatchSnapshot();
46
+ } );
47
+ } );
48
+
49
+ describe( '[STORE] - form thunk actions', () => {
50
+ let store = {};
51
+ beforeAll( () => {
52
+ store = mockStore( {
53
+ events: {
54
+ },
55
+ forms: {
56
+ byId: {
57
+ 20: {
58
+ create: true,
59
+ type: 'tribe_organizer',
60
+ fields: {},
61
+ },
62
+ 21: {
63
+ create: false,
64
+ type: 'tribe_venue',
65
+ fields: {
66
+ id: 21,
67
+ },
68
+ },
69
+ },
70
+ volatile: [],
71
+ },
72
+ } );
73
+ } );
74
+
75
+ afterEach( () => store.clearActions() );
76
+
77
+ test( 'Send the form action when creating', () => {
78
+ store.dispatch( actions.sendForm( 20, { title: 'Modern Tribe' } ) );
79
+ expect( store.getActions() ).toMatchSnapshot();
80
+ } );
81
+
82
+ test( 'Send the form when editing', () => {
83
+ store.dispatch( actions.sendForm( 21, { title: 'Tribe' } ) );
84
+ expect( store.getActions() ).toMatchSnapshot();
85
+ } );
86
+
87
+ test( 'Maybe remove entry action without details', () => {
88
+ store.dispatch( actions.maybeRemoveEntry( 20, {} ) );
89
+ expect( store.getActions() ).toMatchSnapshot();
90
+ } );
91
+
92
+ test( 'Maybe remove entry action with details', () => {
93
+ store.dispatch( actions.maybeRemoveEntry( 21, { id: 21, title: 'Modern Tribe' } ) );
94
+ expect( store.getActions() ).toMatchSnapshot();
95
+ } );
96
+ } );
common/src/modules/data/forms/__tests__/reducer.test.js ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import reducer, { actions } from '@moderntribe/common/data/forms';
5
+ import form, { DEFAULT_STATE } from '@moderntribe/common/data/forms/reducers/form';
6
+
7
+ jest.mock( '@moderntribe/common/data/forms/reducers/form', () => {
8
+ const original = require.requireActual( '@moderntribe/events/data/search/reducers/search' );
9
+ return {
10
+ __esModule: true,
11
+ ...original,
12
+ default: jest.fn( ( state = original.DEFAULT_STATE ) => state ),
13
+ };
14
+ } );
15
+
16
+ jest.mock( '@moderntribe/common/data/forms/reducers/volatile', () => {
17
+ return {
18
+ __esModule: true,
19
+ default: jest.fn( ( state = [] ) => state ),
20
+ };
21
+ } );
22
+
23
+ describe( '[STORE] - form reducer', () => {
24
+ beforeEach( () => {
25
+ form.mockClear();
26
+ } );
27
+
28
+ it( 'Should return the default state', () => {
29
+ expect( reducer( undefined, {} ) ).toEqual( { byId: {}, volatile: [] } );
30
+ } );
31
+
32
+ it( 'Should add a new form', () => {
33
+ const state = {
34
+ byId: {},
35
+ volatile: [],
36
+ };
37
+ expect( reducer( state, actions.registerForm( 20, 'tribe_organizer' ) ) ).toEqual( {
38
+ byId: {
39
+ 20: DEFAULT_STATE,
40
+ },
41
+ volatile: [],
42
+ } );
43
+ } );
44
+
45
+ it( 'Should pass the actions to the child reducer when block not present', () => {
46
+ const groupAction = [
47
+ actions.registerForm( 10, 'tribe_venue' ),
48
+ actions.editEntry( 20, { title: 'Modern tribe' } ),
49
+ actions.createDraft( 20, { title: 'Tribe' } ),
50
+ actions.setSubmit( 20 ),
51
+ actions.clearForm( 20 ),
52
+ actions.setSaving( 20, true ),
53
+ ];
54
+
55
+ groupAction.forEach( ( action ) => {
56
+ reducer( {}, action );
57
+ expect( form ).toHaveBeenCalledWith( undefined, action );
58
+ expect( form ).toHaveBeenCalledTimes( 1 );
59
+ form.mockClear();
60
+ } );
61
+ } );
62
+
63
+ it( 'It should pass the block to the child reducer', () => {
64
+ const groupAction = [
65
+ actions.registerForm( 10, 'tribe_venue' ),
66
+ actions.editEntry( 20, { title: 'Modern tribe' } ),
67
+ actions.createDraft( 20, { title: 'Tribe' } ),
68
+ actions.setSubmit( 20 ),
69
+ actions.clearForm( 20 ),
70
+ actions.setSaving( 20, true ),
71
+ ];
72
+
73
+ const state = {
74
+ byId: {
75
+ 10: DEFAULT_STATE,
76
+ 20: DEFAULT_STATE,
77
+ },
78
+ };
79
+
80
+ groupAction.forEach( ( action ) => {
81
+ reducer( state, action );
82
+ expect( form ).toHaveBeenCalledWith( DEFAULT_STATE, action );
83
+ expect( form ).toHaveBeenCalledTimes( 1 );
84
+ form.mockClear();
85
+ } );
86
+ } );
87
+ } );
88
+
common/src/modules/data/forms/__tests__/selectors.test.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { selectors } from '@moderntribe/common/data/forms';
5
+ import { DEFAULT_STATE } from '@moderntribe/common/data/forms/reducers/form';
6
+
7
+ const state = {
8
+ events: {
9
+ },
10
+ forms: {
11
+ byId: {
12
+ 99: {
13
+ ...DEFAULT_STATE,
14
+ type: 'tribe_organizers',
15
+ create: true,
16
+ fields: {
17
+ name: 'Modern Tribe',
18
+ description: 'The Next Generation of Digital Agency',
19
+ },
20
+ },
21
+ 100: {
22
+ ...DEFAULT_STATE,
23
+ edit: true,
24
+ },
25
+ 101: {
26
+ ...DEFAULT_STATE,
27
+ submit: true,
28
+ },
29
+ 102: {
30
+ ...DEFAULT_STATE,
31
+ saving: true,
32
+ },
33
+ },
34
+ volatile: [ 100, 102 ],
35
+ },
36
+ };
37
+
38
+ describe( '[STORE] - Forms selectors', () => {
39
+ it( 'Should return the forms blocks', () => {
40
+ expect( selectors.formSelector( state, { name: 99 } ) ).toEqual( state.forms.byId[ '99' ] );
41
+ expect( selectors.formSelector( state, { name: 100 } ) ).toEqual( state.forms.byId[ '100' ] );
42
+ expect( selectors.formSelector( state, { name: 200 } ) ).toBe( undefined );
43
+ } );
44
+
45
+ it( 'Should return the form type', () => {
46
+ expect( selectors.getFormType( state, { name: 99 } ) ).toBe( 'tribe_organizers' );
47
+ expect( selectors.getFormType( state, { name: 100 } ) ).toBe( DEFAULT_STATE.type );
48
+ } );
49
+
50
+ it( 'Should return the edit value', () => {
51
+ expect( selectors.getFormEdit( state, { name: 100 } ) ).toBe( true );
52
+ expect( selectors.getFormEdit( state, { name: 99 } ) ).toBe( false );
53
+ expect( selectors.getFormEdit( state, { name: 101 } ) ).toBe( false );
54
+ expect( selectors.getFormEdit( state, { name: 102 } ) ).toBe( false );
55
+ } );
56
+
57
+ it( 'Should return the create value', () => {
58
+ expect( selectors.getFormCreate( state, { name: 99 } ) ).toBe( true );
59
+ expect( selectors.getFormCreate( state, { name: 100 } ) ).toBe( false );
60
+ expect( selectors.getFormCreate( state, { name: 101 } ) ).toBe( false );
61
+ expect( selectors.getFormCreate( state, { name: 102 } ) ).toBe( false );
62
+ } );
63
+
64
+ it( 'Should return the submit value', () => {
65
+ expect( selectors.getFormSubmit( state, { name: 101 } ) ).toBe( true );
66
+ expect( selectors.getFormSubmit( state, { name: 99 } ) ).toBe( false );
67
+ expect( selectors.getFormSubmit( state, { name: 100 } ) ).toBe( false );
68
+ expect( selectors.getFormSubmit( state, { name: 102 } ) ).toBe( false );
69
+ } );
70
+
71
+ it( 'Should return the saving value', () => {
72
+ expect( selectors.getFormSaving( state, { name: 102 } ) ).toBe( true );
73
+ expect( selectors.getFormSaving( state, { name: 99 } ) ).toBe( false );
74
+ expect( selectors.getFormSaving( state, { name: 100 } ) ).toBe( false );
75
+ expect( selectors.getFormSaving( state, { name: 101 } ) ).toBe( false );
76
+ } );
77
+
78
+ it( 'Should return the form fields', () => {
79
+ expect( selectors.getFormFields( state, { name: 99 } ) )
80
+ .toEqual( state.forms.byId[ '99' ].fields );
81
+ expect( selectors.getFormFields( state, { name: 100 } ) ).toEqual( {} );
82
+ expect( selectors.getFormFields( state, { name: 101 } ) ).toEqual( {} );
83
+ expect( selectors.getFormFields( state, { name: 102 } ) ).toEqual( {} );
84
+ } );
85
+
86
+ it( 'Should return the volatile fields', () => {
87
+ expect( selectors.getVolatile( state ) ).toEqual( [ 100, 102 ] );
88
+ } );
89
+ } );
common/src/modules/data/forms/__tests__/types.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { types } from '@moderntribe/common/data/forms';
5
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
6
+
7
+ describe( '[STORE] - Form types', () => {
8
+ it( 'Should return the types values', () => {
9
+ expect( types.REMOVE_VOLATILE_ID ).toBe( `${ PREFIX_COMMON_STORE }/REMOVE_VOLATILE_ID` );
10
+ expect( types.ADD_VOLATILE_ID ).toBe( `${ PREFIX_COMMON_STORE }/ADD_VOLATILE_ID` );
11
+ expect( types.ADD_FORM ).toBe( `${ PREFIX_COMMON_STORE }/ADD_FORM` );
12
+ expect( types.SET_SAVING_FORM ).toBe( `${ PREFIX_COMMON_STORE }/SET_SAVING_FORM` );
13
+ expect( types.SUBMIT_FORM ).toBe( `${ PREFIX_COMMON_STORE }/SUBMIT_FORM` );
14
+ expect( types.CREATE_FORM_DRAFT ).toBe( `${ PREFIX_COMMON_STORE }/CREATE_FORM_DRAFT` );
15
+ expect( types.EDIT_FORM_ENTRY ).toBe( `${ PREFIX_COMMON_STORE }/EDIT_FORM_ENTRY` );
16
+ expect( types.SET_FORM_FIELDS ).toBe( `${ PREFIX_COMMON_STORE }/SET_FORM_FIELDS` );
17
+ expect( types.CLEAR_FORM ).toBe( `${ PREFIX_COMMON_STORE }/CLEAR_FORM` );
18
+ } );
19
+ } );
common/src/modules/data/forms/actions.js ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { isEmpty, get } from 'lodash';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { actions as requestActions } from '@moderntribe/common/store/middlewares/request';
10
+
11
+ import * as types from './types';
12
+ import * as selectors from './selectors';
13
+
14
+ export const registerForm = ( id, type ) => ( {
15
+ type: types.ADD_FORM,
16
+ payload: {
17
+ id,
18
+ type,
19
+ },
20
+ } );
21
+
22
+ export const clearForm = ( id ) => ( {
23
+ type: types.CLEAR_FORM,
24
+ payload: {
25
+ id,
26
+ },
27
+ } );
28
+
29
+ export const createDraft = ( id, fields ) => ( {
30
+ type: types.CREATE_FORM_DRAFT,
31
+ payload: {
32
+ id,
33
+ fields,
34
+ },
35
+ } );
36
+
37
+ export const editEntry = ( id, fields ) => ( {
38
+ type: types.EDIT_FORM_ENTRY,
39
+ payload: {
40
+ id,
41
+ fields,
42
+ },
43
+ } );
44
+
45
+ export const setSubmit = ( id ) => ( {
46
+ type: types.SUBMIT_FORM,
47
+ payload: {
48
+ id,
49
+ },
50
+ } );
51
+
52
+ export const setSaving = ( id, saving ) => ( {
53
+ type: types.SET_SAVING_FORM,
54
+ payload: {
55
+ id,
56
+ saving,
57
+ },
58
+ } );
59
+
60
+ export const addVolatile = ( id ) => ( {
61
+ type: types.ADD_VOLATILE_ID,
62
+ payload: {
63
+ id,
64
+ },
65
+ } );
66
+
67
+ export const removeVolatile = ( id ) => ( {
68
+ type: types.REMOVE_VOLATILE_ID,
69
+ payload: {
70
+ id,
71
+ },
72
+ } );
73
+
74
+ export const sendForm = ( id, fields = {}, completed ) => ( dispatch, getState ) => {
75
+ const state = getState();
76
+ const props = { name: id };
77
+ const type = selectors.getFormType( state, props );
78
+ const create = selectors.getFormCreate( state, props );
79
+ const details = selectors.getFormFields( state, props );
80
+ const saving = selectors.getFormSaving( state, props );
81
+
82
+ if ( saving ) {
83
+ return;
84
+ }
85
+
86
+ const path = create
87
+ ? `${ type }`
88
+ : `${ type }/${ details.id }`;
89
+
90
+ const options = {
91
+ path,
92
+ params: {
93
+ method: create ? 'POST' : 'PUT',
94
+ body: JSON.stringify( fields ),
95
+ },
96
+ actions: {
97
+ start: () => dispatch( setSaving( id, true ) ),
98
+ success: ( { body } ) => {
99
+ const postID = get( body, 'id', '' );
100
+
101
+ if ( create && postID ) {
102
+ dispatch( addVolatile( postID ) );
103
+ }
104
+ completed( body );
105
+ dispatch( clearForm( id ) );
106
+ dispatch( setSaving( id, false ) );
107
+ },
108
+ error: () => {
109
+ dispatch( clearForm( id ) );
110
+ dispatch( setSaving( id, false ) );
111
+ },
112
+ },
113
+ };
114
+ dispatch( requestActions.wpRequest( options ) );
115
+ };
116
+
117
+ const deleteEntry = ( dispatch ) => ( path ) => ( { body } ) => {
118
+ const { id, status } = body;
119
+
120
+ if ( 'draft' !== status ) {
121
+ dispatch( removeVolatile( id ) );
122
+ return;
123
+ }
124
+
125
+ const options = {
126
+ path,
127
+ params: {
128
+ method: 'DELETE',
129
+ },
130
+ actions: {
131
+ success: () => dispatch( removeVolatile( id ) ),
132
+ },
133
+ };
134
+ dispatch( requestActions.wpRequest( options ) );
135
+ };
136
+
137
+ export const maybeRemoveEntry = ( id, details = {} ) => ( dispatch, getState ) => {
138
+ const state = getState();
139
+ const type = selectors.getFormType( state, { name: id } );
140
+
141
+ if ( isEmpty( details ) ) {
142
+ return;
143
+ }
144
+
145
+ const path = `${ type }/${ details.id }`;
146
+ const options = {
147
+ path,
148
+ actions: {
149
+ success: deleteEntry( dispatch )( path ),
150
+ },
151
+ };
152
+ dispatch( requestActions.wpRequest( options ) );
153
+ };
common/src/modules/data/forms/index.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import reducer from './reducer';
5
+
6
+ import * as types from './types';
7
+ import * as actions from './actions';
8
+ import * as selectors from './selectors';
9
+
10
+ export default reducer;
11
+
12
+ export { types, actions, selectors };
common/src/modules/data/forms/reducer.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { combineReducers } from 'redux';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import * as types from './types';
10
+ import { form, volatile } from './reducers';
11
+
12
+ const byId = ( state = {}, action ) => {
13
+ switch ( action.type ) {
14
+ case types.ADD_FORM:
15
+ case types.CLEAR_FORM:
16
+ case types.SET_FORM_FIELDS:
17
+ case types.CREATE_FORM_DRAFT:
18
+ case types.EDIT_FORM_ENTRY:
19
+ case types.SUBMIT_FORM:
20
+ case types.SET_SAVING_FORM:
21
+ return {
22
+ ...state,
23
+ [ action.payload.id ]: form( state[ action.payload.id ], action ),
24
+ };
25
+ default:
26
+ return state;
27
+ }
28
+ };
29
+
30
+ export default combineReducers( {
31
+ byId,
32
+ volatile,
33
+ } );
common/src/modules/data/forms/reducers/__tests__/__snapshots__/form.test.js.snap ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`[STORE] - form reducer Should add a new form 1`] = `
4
+ Object {
5
+ "create": false,
6
+ "edit": false,
7
+ "fields": Object {},
8
+ "saving": false,
9
+ "submit": false,
10
+ "type": "tribe_organizers",
11
+ }
12
+ `;
13
+
14
+ exports[`[STORE] - form reducer Should clear a form 1`] = `
15
+ Object {
16
+ "create": false,
17
+ "edit": false,
18
+ "fields": Object {},
19
+ "saving": false,
20
+ "submit": false,
21
+ "type": "tribe_organizers",
22
+ }
23
+ `;
24
+
25
+ exports[`[STORE] - form reducer Should create a form draft 1`] = `
26
+ Object {
27
+ "create": true,
28
+ "edit": false,
29
+ "fields": Object {
30
+ "id": 20,
31
+ "title": "Modern Tribe",
32
+ },
33
+ "saving": false,
34
+ "submit": false,
35
+ "type": "tribe_events",
36
+ }
37
+ `;
38
+
39
+ exports[`[STORE] - form reducer Should edit the form entry 1`] = `
40
+ Object {
41
+ "create": false,
42
+ "edit": true,
43
+ "fields": Object {
44
+ "description": "",
45
+ "title": "Tribe",
46
+ },
47
+ "saving": false,
48
+ "submit": false,
49
+ "type": "tribe_events",
50
+ }
51
+ `;
52
+
53
+ exports[`[STORE] - form reducer Should submit the form 1`] = `
54
+ Object {
55
+ "create": false,
56
+ "edit": false,
57
+ "fields": Object {},
58
+ "saving": false,
59
+ "submit": true,
60
+ "type": "tribe_events",
61
+ }
62
+ `;
63
+
64
+ exports[`[STORE] - form reducer Should toggle the saving form flag 1`] = `
65
+ Object {
66
+ "create": false,
67
+ "edit": false,
68
+ "fields": Object {},
69
+ "saving": true,
70
+ "submit": false,
71
+ "type": "tribe_events",
72
+ }
73
+ `;
74
+
75
+ exports[`[STORE] - form reducer Should toggle the saving form flag 2`] = `
76
+ Object {
77
+ "create": false,
78
+ "edit": false,
79
+ "fields": Object {},
80
+ "saving": false,
81
+ "submit": false,
82
+ "type": "tribe_events",
83
+ }
84
+ `;
common/src/modules/data/forms/reducers/__tests__/form.test.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { form } from '@moderntribe/common/data/forms/reducers';
5
+ import { actions } from '@moderntribe/common/data/forms';
6
+ import { DEFAULT_STATE } from '@moderntribe/common/data/forms/reducers/form';
7
+
8
+ describe( '[STORE] - form reducer', () => {
9
+ it( 'Should return the default state', () => {
10
+ expect( form( undefined, {} ) ).toEqual( DEFAULT_STATE );
11
+ } );
12
+
13
+ it( 'Should add a new form', () => {
14
+ expect( form( DEFAULT_STATE, actions.registerForm( 20, 'tribe_organizers' ) ) ).toMatchSnapshot();
15
+ } );
16
+
17
+ it( 'Should clear a form', () => {
18
+ const state = {
19
+ ...DEFAULT_STATE,
20
+ type: 'tribe_organizers',
21
+ };
22
+ expect( form( state, actions.clearForm( 20 ) ) ).toMatchSnapshot();
23
+ } );
24
+
25
+ it( 'Should create a form draft', () => {
26
+ const fields = {
27
+ id: 20,
28
+ title: 'Modern Tribe',
29
+ };
30
+ expect( form( DEFAULT_STATE, actions.createDraft( 20, fields ) ) ).toMatchSnapshot();
31
+ } );
32
+
33
+ it( 'Should toggle the saving form flag', () => {
34
+ expect( form( DEFAULT_STATE, actions.setSaving( 20, true ) ) ).toMatchSnapshot();
35
+ expect( form( DEFAULT_STATE, actions.setSaving( 20, false ) ) ).toMatchSnapshot();
36
+ } );
37
+
38
+ it( 'Should edit the form entry', () => {
39
+ const fields = {
40
+ title: 'Tribe',
41
+ description: '',
42
+ };
43
+ expect( form( DEFAULT_STATE, actions.editEntry( 20, fields ) ) ).toMatchSnapshot();
44
+ } );
45
+
46
+ it( 'Should submit the form', () => {
47
+ expect( form( DEFAULT_STATE, actions.setSubmit( 20 ) ) ).toMatchSnapshot();
48
+ } );
49
+ } );
common/src/modules/data/forms/reducers/__tests__/volatile.test.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { volatile } from '@moderntribe/common/data/forms/reducers';
5
+ import { actions } from '@moderntribe/common/data/forms';
6
+
7
+ describe( '[STORE] - Volatile reducer', () => {
8
+ it( 'Should return the default state', () => {
9
+ expect( volatile( undefined, {} ) ).toEqual( [] );
10
+ } );
11
+
12
+ it( 'Should add a new volatile value', () => {
13
+ expect( volatile( [], actions.addVolatile( 20 ) ) ).toEqual( [ 20 ] );
14
+ expect( volatile( [ 20 ], actions.addVolatile( 10 ) ) ).toEqual( [ 20, 10 ] );
15
+ } );
16
+
17
+ it( 'Should remove a volatile value', () => {
18
+ expect( volatile( [], actions.removeVolatile( 20 ) ) ).toEqual( [] );
19
+ expect( volatile( [ 20, 10 ], actions.removeVolatile( 20 ) ) ).toEqual( [ 10 ] );
20
+ expect( volatile( [ 20, 10 ], actions.removeVolatile( 10 ) ) ).toEqual( [ 20 ] );
21
+ expect( volatile( [ 10 ], actions.removeVolatile( 10 ) ) ).toEqual( [] );
22
+ } );
23
+ } );
common/src/modules/data/forms/reducers/form.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { EVENT } from '@moderntribe/common/data/editor/post-types';
5
+ import * as types from '@moderntribe/common/data/forms/types';
6
+
7
+ export const DEFAULT_STATE = {
8
+ edit: false,
9
+ create: false,
10
+ submit: false,
11
+ saving: false,
12
+ fields: {},
13
+ type: EVENT,
14
+ };
15
+
16
+ export default ( state = DEFAULT_STATE, action ) => {
17
+ switch ( action.type ) {
18
+ case types.ADD_FORM:
19
+ return {
20
+ ...state,
21
+ type: action.payload.type,
22
+ };
23
+ case types.CLEAR_FORM:
24
+ return {
25
+ ...state,
26
+ ...DEFAULT_STATE,
27
+ type: state.type,
28
+ };
29
+ case types.CREATE_FORM_DRAFT:
30
+ return {
31
+ ...state,
32
+ submit: false,
33
+ edit: false,
34
+ create: true,
35
+ fields: action.payload.fields,
36
+ };
37
+ case types.SET_SAVING_FORM:
38
+ return {
39
+ ...state,
40
+ saving: action.payload.saving,
41
+ };
42
+ case types.EDIT_FORM_ENTRY:
43
+ return {
44
+ ...state,
45
+ create: false,
46
+ submit: false,
47
+ edit: true,
48
+ fields: action.payload.fields,
49
+ };
50
+ case types.SUBMIT_FORM:
51
+ return {
52
+ ...state,
53
+ submit: true,
54
+ };
55
+ default:
56
+ return state;
57
+ }
58
+ };
common/src/modules/data/forms/reducers/index.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ export { default as form } from './form';
2
+ export { default as volatile } from './volatile';
common/src/modules/data/forms/reducers/volatile.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import * as types from '@moderntribe/common/data/forms/types';
5
+
6
+ export default ( state = [], action ) => {
7
+ switch ( action.type ) {
8
+ case types.ADD_VOLATILE_ID:
9
+ return [ ...state, action.payload.id ];
10
+ case types.REMOVE_VOLATILE_ID:
11
+ return state.filter( ( id ) => id !== action.payload.id );
12
+ default:
13
+ return state;
14
+ }
15
+ };
common/src/modules/data/forms/selectors.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { createSelector } from 'reselect';
5
+ import { DEFAULT_STATE } from './reducers/form';
6
+
7
+ export const formSelector = ( state, props ) => state.forms.byId[ props.name ];
8
+
9
+ export const getFormType = createSelector(
10
+ [ formSelector ],
11
+ ( block ) => block ? block.type : DEFAULT_STATE.type
12
+ );
13
+
14
+ export const getFormEdit = createSelector(
15
+ [ formSelector ],
16
+ ( block ) => block ? block.edit : DEFAULT_STATE.edit
17
+ );
18
+
19
+ export const getFormCreate = createSelector(
20
+ [ formSelector ],
21
+ ( block ) => block ? block.create : DEFAULT_STATE.create,
22
+ );
23
+
24
+ export const getFormSubmit = createSelector(
25
+ [ formSelector ],
26
+ ( block ) => block ? block.submit : DEFAULT_STATE.submit
27
+ );
28
+
29
+ export const getFormFields = createSelector(
30
+ [ formSelector ],
31
+ ( block ) => block ? block.fields : DEFAULT_STATE.fields,
32
+ );
33
+
34
+ export const getFormSaving = createSelector(
35
+ [ formSelector ],
36
+ ( block ) => block ? block.saving : DEFAULT_STATE.saving
37
+ );
38
+
39
+ export const getVolatile = ( state ) => state.forms.volatile;
common/src/modules/data/forms/types.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
5
+
6
+ export const ADD_FORM = `${ PREFIX_COMMON_STORE }/ADD_FORM`;
7
+ export const SET_FORM_FIELDS = `${ PREFIX_COMMON_STORE }/SET_FORM_FIELDS`;
8
+ export const CREATE_FORM_DRAFT = `${ PREFIX_COMMON_STORE }/CREATE_FORM_DRAFT`;
9
+ export const EDIT_FORM_ENTRY = `${ PREFIX_COMMON_STORE }/EDIT_FORM_ENTRY`;
10
+ export const SUBMIT_FORM = `${ PREFIX_COMMON_STORE }/SUBMIT_FORM`;
11
+ export const CLEAR_FORM = `${ PREFIX_COMMON_STORE }/CLEAR_FORM`;
12
+ export const SET_SAVING_FORM = `${ PREFIX_COMMON_STORE }/SET_SAVING_FORM`;
13
+
14
+ export const ADD_VOLATILE_ID = `${ PREFIX_COMMON_STORE }/ADD_VOLATILE_ID`;
15
+ export const REMOVE_VOLATILE_ID = `${ PREFIX_COMMON_STORE }/REMOVE_VOLATILE_ID`;
common/src/modules/data/index.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal Dependencies
3
+ */
4
+ import * as editor from './editor/post-types';
5
+ import * as forms from './forms';
6
+ import * as plugins from './plugins';
7
+ export { default } from './reducers';
8
+
9
+ export { editor, forms, plugins };
common/src/modules/data/plugins/__tests__/__snapshots__/actions.test.js.snap ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Plugin actions Add Plugin 1`] = `
4
+ Object {
5
+ "payload": Object {
6
+ "name": "events",
7
+ },
8
+ "type": "@@MT/COMMON/ADD_PLUGIN",
9
+ }
10
+ `;
11
+
12
+ exports[`Plugin actions Remove Plugin 1`] = `
13
+ Object {
14
+ "payload": Object {
15
+ "name": "events",
16
+ },
17
+ "type": "@@MT/COMMON/REMOVE_PLUGIN",
18
+ }
19
+ `;
common/src/modules/data/plugins/__tests__/actions.test.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { actions } from '@moderntribe/common/data/plugins';
5
+
6
+ describe( 'Plugin actions', () => {
7
+ test( 'Add Plugin', () => {
8
+ expect( actions.addPlugin( 'events' ) ).toMatchSnapshot();
9
+ } );
10
+
11
+ test( 'Remove Plugin', () => {
12
+ expect( actions.removePlugin( 'events' ) ).toMatchSnapshot();
13
+ } );
14
+ } );
common/src/modules/data/plugins/__tests__/reducer.test.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import reducer, { actions } from '@moderntribe/common/data/plugins';
5
+
6
+ describe( 'Plugins reducer', () => {
7
+ it( 'Should return the default state', () => {
8
+ expect( reducer( undefined, {} ) ).toEqual( [] );
9
+ } );
10
+
11
+ it( 'Should add a new plugin as active', () => {
12
+ expect( reducer( {}, actions.addPlugin( 'events' ) ) ).toEqual( [ 'events' ] );
13
+ } );
14
+
15
+ it( 'Should avoid adding duplicates entries', () => {
16
+ const state = reducer( {}, actions.addPlugin( 'events' ) );
17
+ expect( reducer( state, actions.addPlugin( 'events' ) ) ).toEqual( [ 'events' ] );
18
+ } );
19
+
20
+ it( 'Should remove the plugin from the reducer', () => {
21
+ const state = reducer( {}, actions.addPlugin( 'events' ) );
22
+ expect( state ).toEqual( [ 'events' ] );
23
+ expect( reducer( state, actions.removePlugin( 'events' ) ) ).toEqual( [] );
24
+ } );
25
+ } );
common/src/modules/data/plugins/__tests__/selectors.test.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { selectors } from '@moderntribe/common/data/plugins';
5
+
6
+ describe( 'Plugin selectors', () => {
7
+ let state;
8
+
9
+ beforeEach( () => {
10
+ state = {
11
+ plugins: [ 'events' ],
12
+ };
13
+ } );
14
+
15
+ it( 'should have plugin', () => {
16
+ expect( selectors.hasPlugin( state, 'events' ) ).toEqual( true );
17
+ expect( selectors.hasPlugin( state )( 'events' ) ).toEqual( true );
18
+ } );
19
+ it( 'should not have plugin', () => {
20
+ expect( selectors.hasPlugin( state, 'events-pro' ) ).toEqual( false );
21
+ expect( selectors.hasPlugin( state )( 'events-pro' ) ).toEqual( false );
22
+ } );
23
+ } );
common/src/modules/data/plugins/__tests__/types.test.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
5
+ import { types } from '@moderntribe/common/data/plugins';
6
+
7
+ describe( 'Plugin types', () => {
8
+ it( 'Should return the types with a prefix', () => {
9
+ expect( types.ADD_PLUGIN ).toBe( `${ PREFIX_COMMON_STORE }/ADD_PLUGIN` );
10
+ expect( types.REMOVE_PLUGIN ).toBe( `${ PREFIX_COMMON_STORE }/REMOVE_PLUGIN` );
11
+ } );
12
+ } );
common/src/modules/data/plugins/actions.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import * as types from './types';
5
+
6
+ export const addPlugin = ( name ) => ( {
7
+ type: types.ADD_PLUGIN,
8
+ payload: {
9
+ name,
10
+ },
11
+ } );
12
+
13
+ export const removePlugin = ( name ) => ( {
14
+ type: types.REMOVE_PLUGIN,
15
+ payload: {
16
+ name,
17
+ },
18
+ } );
common/src/modules/data/plugins/constants.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ export const EVENTS_PLUGIN = 'events';
2
+ export const EVENTS_PRO_PLUGIN = 'events-pro';
3
+ export const TICKETS = 'tickets';
4
+ export const TICKETS_PLUS = 'tickets-plus';
common/src/modules/data/plugins/index.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import reducer from './reducer';
5
+ import * as types from './types';
6
+ import * as actions from './actions';
7
+ import * as selectors from './selectors';
8
+ import * as constants from './constants';
9
+ import * as proptypes from './proptypes';
10
+
11
+ export default reducer;
12
+ export { types, actions, selectors, constants, proptypes };
common/src/modules/data/plugins/proptypes.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import PropTypes from 'prop-types';
5
+
6
+ //
7
+ // ─── VENDOR ─────────────────────────────────────────────────────────────────────
8
+ //
9
+
10
+ export const ReactSelectOption = PropTypes.shape( {
11
+ label: PropTypes.string.isRequired,
12
+ value: PropTypes.any.isRequired,
13
+ } );
14
+
15
+ export const ReactSelectOptions = PropTypes.arrayOf( ReactSelectOption );
common/src/modules/data/plugins/reducer.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { uniq } from 'lodash';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { types } from '@moderntribe/common/data/plugins';
10
+
11
+ export default ( state = [], action ) => {
12
+ switch ( action.type ) {
13
+ case types.ADD_PLUGIN:
14
+ return uniq( [ ...state, action.payload.name ] );
15
+ case types.REMOVE_PLUGIN:
16
+ return [ ...state ].filter( ( pluginName ) => pluginName !== action.payload.name );
17
+ default:
18
+ return state;
19
+ }
20
+ };
common/src/modules/data/plugins/selectors.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { includes } from 'lodash';
5
+ import { curry } from 'lodash/fp';
6
+
7
+ export const getPlugins = ( state ) => state.plugins;
8
+
9
+ export const hasPlugin = curry( ( state, plugin ) => includes( getPlugins( state ), plugin ) );
common/src/modules/data/plugins/types.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
5
+
6
+ export const ADD_PLUGIN = `${ PREFIX_COMMON_STORE }/ADD_PLUGIN`;
7
+ export const REMOVE_PLUGIN = `${ PREFIX_COMMON_STORE }/REMOVE_PLUGIN`;
common/src/modules/data/reducers.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { setupCreateReducer } from '@nfen/redux-reducer-injector';
5
+ import forms from './forms';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import plugins from './plugins';
11
+
12
+ export default setupCreateReducer( {
13
+ plugins,
14
+ forms,
15
+ } );
common/src/modules/data/utils.js ADDED
@@ -0,0 +1 @@
 
1
+ export const PREFIX_COMMON_STORE = '@@MT/COMMON';
common/src/modules/elements/accordion/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Accordion Element renders an accordion 1`] = `
4
+ <div
5
+ aria-multiselectable="true"
6
+ className="tribe-editor__accordion"
7
+ role="tablist"
8
+ >
9
+ <article
10
+ className="tribe-editor__accordion__row"
11
+ >
12
+ <button
13
+ aria-controls="accordion-content-123"
14
+ aria-expanded="false"
15
+ aria-selected="false"
16
+ className="tribe-editor__button tribe-editor__accordion__row-header header-class"
17
+ id="accordion-header-123"
18
+ onClick={[Function]}
19
+ role="tab"
20
+ type="button"
21
+ >
22
+ this is header
23
+ </button>
24
+ <div
25
+ aria-hidden="true"
26
+ aria-labelledby="accordion-header-123"
27
+ className="tribe-editor__accordion__row-content content-class"
28
+ id="accordion-content-123"
29
+ role="tabpanel"
30
+ >
31
+ this is a content
32
+ </div>
33
+ </article>
34
+ </div>
35
+ `;
36
+
37
+ exports[`Accordion Element renders an accordion with wrapper class 1`] = `
38
+ <div
39
+ aria-multiselectable="true"
40
+ className="tribe-editor__accordion test-class"
41
+ role="tablist"
42
+ >
43
+ <article
44
+ className="tribe-editor__accordion__row"
45
+ >
46
+ <button
47
+ aria-controls="accordion-content-123"
48
+ aria-expanded="false"
49
+ aria-selected="false"
50
+ className="tribe-editor__button tribe-editor__accordion__row-header header-class"
51
+ id="accordion-header-123"
52
+ onClick={[Function]}
53
+ role="tab"
54
+ type="button"
55
+ >
56
+ this is header
57
+ </button>
58
+ <div
59
+ aria-hidden="true"
60
+ aria-labelledby="accordion-header-123"
61
+ className="tribe-editor__accordion__row-content content-class"
62
+ id="accordion-content-123"
63
+ role="tabpanel"
64
+ >
65
+ this is a content
66
+ </div>
67
+ </article>
68
+ </div>
69
+ `;
70
+
71
+ exports[`Accordion Element renders null 1`] = `null`;
common/src/modules/elements/accordion/__tests__/element.test.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+ import { noop } from 'lodash';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { Accordion } from '@moderntribe/common/elements';
12
+
13
+ let rows;
14
+
15
+ describe( 'Accordion Element', () => {
16
+ beforeEach( () => {
17
+ rows = [
18
+ {
19
+ accordionId: '123',
20
+ content: 'this is a content',
21
+ contentClassName: 'content-class',
22
+ header: 'this is header',
23
+ headerClassName: 'header-class',
24
+ onClick: noop,
25
+ onClose: noop,
26
+ onOpen: noop,
27
+ },
28
+ ];
29
+ } );
30
+
31
+ it( 'renders null', () => {
32
+ const component = renderer.create( <Accordion /> );
33
+ expect( component.toJSON() ).toMatchSnapshot();
34
+ } );
35
+
36
+ it( 'renders an accordion', () => {
37
+ const component = renderer.create( <Accordion rows={ rows } /> );
38
+ expect( component.toJSON() ).toMatchSnapshot();
39
+ } );
40
+
41
+ it( 'renders an accordion with wrapper class', () => {
42
+ const component = renderer.create( <Accordion className="test-class" rows={ rows } /> );
43
+ expect( component.toJSON() ).toMatchSnapshot();
44
+ } );
45
+ } );
common/src/modules/elements/accordion/element.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Row from './row/template';
12
+ import './style.pcss';
13
+
14
+ const Accordion = ( {
15
+ className,
16
+ containerAttrs,
17
+ rows,
18
+ } ) => (
19
+ rows.length
20
+ ? (
21
+ <div
22
+ aria-multiselectable="true"
23
+ className={ classNames(
24
+ 'tribe-editor__accordion',
25
+ className,
26
+ ) }
27
+ role="tablist"
28
+ { ...containerAttrs }
29
+ >
30
+ { rows.map( ( row, index ) => (
31
+ <Row key={ index } { ...row } />
32
+ ) ) }
33
+ </div>
34
+ )
35
+ : null
36
+ );
37
+
38
+ Accordion.defaultProps = {
39
+ containerAttrs: {},
40
+ rows: [],
41
+ };
42
+
43
+ Accordion.propTypes = {
44
+ className: PropTypes.string,
45
+ containerAttrs: PropTypes.object,
46
+ rows: PropTypes.arrayOf( PropTypes.shape( {
47
+ accordionId: PropTypes.string.isRequired,
48
+ content: PropTypes.node,
49
+ contentClassName: PropTypes.string,
50
+ header: PropTypes.node,
51
+ headerClassName: PropTypes.string,
52
+ onClick: PropTypes.func,
53
+ onClose: PropTypes.func,
54
+ onOpen: PropTypes.func,
55
+ } ).isRequired ).isRequired,
56
+ };
57
+
58
+ export default Accordion;
common/src/modules/elements/accordion/row/__tests__/__snapshots__/template.test.js.snap ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Accordion Row Element renders an accordion row 1`] = `
4
+ <article
5
+ className="tribe-editor__accordion__row"
6
+ >
7
+ <button
8
+ aria-controls="accordion-content-123"
9
+ aria-expanded="false"
10
+ aria-selected="false"
11
+ className="tribe-editor__button tribe-editor__accordion__row-header header-class"
12
+ data-attr="header-attr-value"
13
+ id="accordion-header-123"
14
+ onClick={[Function]}
15
+ role="tab"
16
+ type="button"
17
+ >
18
+ this is header
19
+ </button>
20
+ <div
21
+ aria-hidden="true"
22
+ aria-labelledby="accordion-header-123"
23
+ className="tribe-editor__accordion__row-content content-class"
24
+ data-attr="content-attr-value"
25
+ id="accordion-content-123"
26
+ role="tabpanel"
27
+ >
28
+ this is a content
29
+ </div>
30
+ </article>
31
+ `;
common/src/modules/elements/accordion/row/__tests__/template.test.js ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import Row from '@moderntribe/common/elements/accordion/row/template';
10
+
11
+ let row;
12
+
13
+ describe( 'Accordion Row Element', () => {
14
+ beforeEach( () => {
15
+ row = {
16
+ accordionId: '123',
17
+ content: 'this is a content',
18
+ contentAttrs: { 'data-attr': 'content-attr-value' },
19
+ contentClassName: 'content-class',
20
+ header: 'this is header',
21
+ headerAttrs: { 'data-attr': 'header-attr-value' },
22
+ headerClassName: 'header-class',
23
+ onClick: jest.fn(),
24
+ onClose: jest.fn(),
25
+ onOpen: jest.fn(),
26
+ };
27
+ } );
28
+
29
+ it( 'renders an accordion row', () => {
30
+ const component = renderer.create( <Row { ...row } /> );
31
+ expect( component.toJSON() ).toMatchSnapshot();
32
+ } );
33
+
34
+ it( 'executes onClick handler', () => {
35
+ const component = mount( <Row { ...row } /> );
36
+ component.find( 'button' ).simulate( 'click' );
37
+ expect( row.onClick ).toHaveBeenCalled();
38
+ expect( row.onClick ).toHaveBeenCalledTimes( 1 );
39
+ } );
40
+
41
+ it( 'executes onOpen and onClose handlers', async () => {
42
+ const component = mount( <Row { ...row } /> );
43
+ component.find( 'button' ).simulate( 'click' );
44
+ await setTimeout( () => {
45
+ component.find( 'button' ).simulate( 'click' );
46
+ setTimeout( () => {
47
+ expect( row.onOpen ).toHaveBeenCalled();
48
+ expect( row.onOpen ).toHaveBeenCalledTimes( 1 );
49
+ expect( row.onClose ).toHaveBeenCalled();
50
+ expect( row.onClose ).toHaveBeenCalledTimes( 1 );
51
+ expect( row.onClick ).toHaveBeenCalled();
52
+ expect( row.onClick ).toHaveBeenCalledTimes( 2 );
53
+ }, 250 );
54
+ }, 250 );
55
+ } );
56
+ } );
common/src/modules/elements/accordion/row/template.js ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Button from '@moderntribe/common/elements/button/element';
12
+ import { slide } from '@moderntribe/common/utils';
13
+
14
+ class Row extends PureComponent {
15
+ static propTypes = {
16
+ accordionId: PropTypes.string.isRequired,
17
+ content: PropTypes.node,
18
+ contentAttrs: PropTypes.object,
19
+ contentClassName: PropTypes.string,
20
+ header: PropTypes.node,
21
+ headerAttrs: PropTypes.object,
22
+ headerClassName: PropTypes.string,
23
+ onClick: PropTypes.func,
24
+ onClose: PropTypes.func,
25
+ onOpen: PropTypes.func,
26
+ };
27
+
28
+ static defaultProps = {
29
+ contentAttrs: {},
30
+ headerAttrs: {},
31
+ };
32
+
33
+ constructor( props ) {
34
+ super( props );
35
+ this.state = {
36
+ isActive: false,
37
+ };
38
+ this.headerId = `accordion-header-${ this.props.accordionId }`;
39
+ this.contentId = `accordion-content-${ this.props.accordionId }`;
40
+ }
41
+
42
+ getHeaderAttrs = () => {
43
+ const _isActive = this.state.isActive ? 'true' : 'false';
44
+ return {
45
+ 'aria-controls': this.contentId,
46
+ 'aria-expanded': _isActive,
47
+ 'aria-selected': _isActive,
48
+ id: this.headerId,
49
+ role: 'tab',
50
+ ...this.props.headerAttrs,
51
+ };
52
+ };
53
+
54
+ getContentAttrs = () => ( {
55
+ 'aria-hidden': this.state.isActive ? 'false' : 'true',
56
+ 'aria-labelledby': this.headerId,
57
+ id: this.contentId,
58
+ role: 'tabpanel',
59
+ ...this.props.contentAttrs,
60
+ } );
61
+
62
+ onClose = ( parent, e ) => () => {
63
+ parent.classList.remove( 'closing' );
64
+ parent.classList.add( 'closed' );
65
+ this.props.onClose && this.props.onClose( e );
66
+ };
67
+
68
+ onOpen = ( parent, e ) => () => {
69
+ parent.classList.remove( 'opening' );
70
+ parent.classList.add( 'open' );
71
+ this.props.onOpen && this.props.onOpen( e );
72
+ };
73
+
74
+ onClick = ( e ) => {
75
+ const { contentId, onClick } = this.props;
76
+ const parent = e.currentTarget.parentNode;
77
+ const content = e.currentTarget.nextElementSibling;
78
+
79
+ this.state.isActive
80
+ ? parent.classList.add( 'closing' )
81
+ : parent.classList.add( 'opening' );
82
+ this.state.isActive
83
+ ? slide.up( content, contentId, 200, this.onClose( parent, e ) )
84
+ : slide.down( content, contentId, 200, this.onOpen( parent, e ) );
85
+
86
+ onClick && onClick( e );
87
+ this.setState( ( state ) => ( { isActive: ! state.isActive } ) );
88
+ };
89
+
90
+ render() {
91
+ const {
92
+ content,
93
+ contentClassName,
94
+ header,
95
+ headerClassName,
96
+ } = this.props;
97
+
98
+ return (
99
+ <article
100
+ className={ classNames(
101
+ 'tribe-editor__accordion__row',
102
+ { active: this.state.isActive },
103
+ ) }
104
+ >
105
+ <Button
106
+ className={ classNames(
107
+ 'tribe-editor__accordion__row-header',
108
+ headerClassName,
109
+ ) }
110
+ onClick={ ( e ) => this.onClick( e ) }
111
+ { ...this.getHeaderAttrs() }
112
+ >
113
+ { header }
114
+ </Button>
115
+ <div
116
+ className={ classNames(
117
+ 'tribe-editor__accordion__row-content',
118
+ contentClassName,
119
+ ) }
120
+ { ...this.getContentAttrs() }
121
+ >
122
+ { content }
123
+ </div>
124
+ </article>
125
+ );
126
+ }
127
+ }
128
+
129
+ export default Row;
common/src/modules/elements/accordion/style.pcss ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ .tribe-editor__accordion__row-content {
2
+ max-height: 0;
3
+ overflow: hidden;
4
+
5
+ &.active {
6
+ max-height: none;
7
+ }
8
+ }
common/src/modules/elements/block-icon/index.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { TEC } from '@moderntribe/common/icons';
10
+ import './style.pcss';
11
+
12
+ export default () => (
13
+ <div className="tribe-editor__icons__container tribe-editor__icons--tec">
14
+ <TEC />
15
+ </div>
16
+ );
common/src/modules/elements/block-icon/style.pcss ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .editor-block-inspector__card {
2
+ .tribe-editor__icons__container {
3
+ padding: 4px;
4
+ display: flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+
8
+ svg {
9
+ width: 28px;
10
+ height: 28px;
11
+ }
12
+ }
13
+
14
+ .tribe-editor__icons--tec {
15
+ background-color: #199FD1;
16
+ }
17
+ }
18
+
19
+
20
+ button[class^='editor-block-list-item-tribe-'], button[class*=' editor-block-list-item-tribe-'] {
21
+ svg {
22
+ color: #16a0d6;
23
+ }
24
+ }
common/src/modules/elements/button/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Button Element renders button 1`] = `
4
+ <button
5
+ className="tribe-editor__button"
6
+ onClick={[Function]}
7
+ type="button"
8
+ />
9
+ `;
10
+
11
+ exports[`Button Element renders button with class 1`] = `
12
+ <button
13
+ className="tribe-editor__button test-class"
14
+ onClick={[Function]}
15
+ type="button"
16
+ />
17
+ `;
18
+
19
+ exports[`Button Element renders button with extra attributes 1`] = `
20
+ <button
21
+ className="tribe-editor__button"
22
+ hello="world"
23
+ onClick={[Function]}
24
+ test="one-two-three"
25
+ type="button"
26
+ />
27
+ `;
28
+
29
+ exports[`Button Element renders button with label 1`] = `
30
+ <button
31
+ className="tribe-editor__button"
32
+ onClick={[Function]}
33
+ type="button"
34
+ >
35
+ Hello
36
+ </button>
37
+ `;
38
+
39
+ exports[`Button Element renders button with onClick handler 1`] = `
40
+ <button
41
+ className="tribe-editor__button"
42
+ onClick={[MockFunction]}
43
+ type="button"
44
+ />
45
+ `;
46
+
47
+ exports[`Button Element renders button with set type 1`] = `
48
+ <button
49
+ className="tribe-editor__button"
50
+ onClick={[Function]}
51
+ type="submit"
52
+ />
53
+ `;
54
+
55
+ exports[`Button Element renders disabled button 1`] = `
56
+ <button
57
+ className="tribe-editor__button"
58
+ disabled={true}
59
+ onClick={[Function]}
60
+ type="button"
61
+ />
62
+ `;
common/src/modules/elements/button/__tests__/element.test.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { Button } from '@moderntribe/common/elements';
11
+
12
+ describe( 'Button Element', () => {
13
+ it( 'renders button', () => {
14
+ const component = renderer.create( <Button /> );
15
+ expect( component.toJSON() ).toMatchSnapshot();
16
+ } );
17
+
18
+ it( 'renders button with class', () => {
19
+ const component = renderer.create( <Button className="test-class" /> );
20
+ expect( component.toJSON() ).toMatchSnapshot();
21
+ } );
22
+
23
+ it( 'renders disabled button', () => {
24
+ const component = renderer.create( <Button isDisabled={ true } /> );
25
+ expect( component.toJSON() ).toMatchSnapshot();
26
+ } );
27
+
28
+ it( 'renders button with label', () => {
29
+ const component = renderer.create( <Button>Hello</Button> );
30
+ expect( component.toJSON() ).toMatchSnapshot();
31
+ } );
32
+
33
+ it( 'renders button with onClick handler', () => {
34
+ const onClick = jest.fn();
35
+ const component = renderer.create( <Button onClick={ onClick } /> );
36
+ expect( component.toJSON() ).toMatchSnapshot();
37
+ } );
38
+
39
+ it( 'executes the onClick handler', () => {
40
+ const onClick = jest.fn();
41
+ const component = mount( <Button onClick={ onClick } /> );
42
+ component.find( 'button' ).simulate( 'click' );
43
+ expect( onClick ).toHaveBeenCalled();
44
+ expect( onClick ).toHaveBeenCalledTimes( 1 );
45
+ } );
46
+
47
+ it( 'renders button with set type', () => {
48
+ const component = renderer.create( <Button type="submit" /> );
49
+ expect( component.toJSON() ).toMatchSnapshot();
50
+ } );
51
+
52
+ it( 'renders button with extra attributes', () => {
53
+ const attrs = {
54
+ test: 'one-two-three',
55
+ hello: 'world',
56
+ };
57
+ const component = renderer.create( <Button { ...attrs } /> );
58
+ expect( component.toJSON() ).toMatchSnapshot();
59
+ } );
60
+ } );
common/src/modules/elements/button/element.js ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import { noop } from 'lodash';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import './style.pcss';
13
+
14
+ class Button extends PureComponent {
15
+ static defaultProps = {
16
+ onClick: noop,
17
+ type: 'button',
18
+ };
19
+
20
+ static propTypes = {
21
+ className: PropTypes.oneOfType( [
22
+ PropTypes.string,
23
+ PropTypes.arrayOf( PropTypes.string ),
24
+ PropTypes.object,
25
+ ] ),
26
+ isDisabled: PropTypes.bool,
27
+ children: PropTypes.node,
28
+ onClick: PropTypes.func,
29
+ type: PropTypes.string,
30
+ };
31
+
32
+ render() {
33
+ const {
34
+ children,
35
+ className,
36
+ isDisabled,
37
+ onClick,
38
+ type,
39
+ ...rest
40
+ } = this.props;
41
+
42
+ return (
43
+ <button
44
+ className={ classNames( 'tribe-editor__button', className ) }
45
+ disabled={ isDisabled }
46
+ type={ type }
47
+ onClick={ onClick }
48
+ { ...rest }
49
+ >
50
+ { children }
51
+ </button>
52
+ );
53
+ }
54
+ }
55
+
56
+ export default Button;
common/src/modules/elements/button/style.pcss ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* basic styles are in .tribe-editor__btn, this is kepted for backward compatibility */
2
+ .tribe-editor__btn--label {
3
+ background-color: transparent;
4
+ border: none;
5
+ padding: 0;
6
+ margin: 0;
7
+ text-align: left;
8
+ }
9
+
10
+ /* extra editor-styles-wrapper class to override gutenberg styles */
11
+ .editor-styles-wrapper {
12
+
13
+ .tribe-editor__button {
14
+ background-color: transparent;
15
+ border: none;
16
+ padding: 0;
17
+ margin: 0;
18
+ font-family: 'Helvetica', 'sans-serif';
19
+ cursor: pointer;
20
+ }
21
+
22
+ .tribe-editor__button--sm {
23
+ background-color: #009fd4;
24
+ color: #ffffff;
25
+ padding: 11px 16px 9px;
26
+ font-size: 15px;
27
+ font-weight: bold;
28
+ line-height: 18px;
29
+ transition: background-color 0.2s ease;
30
+
31
+ &:hover,
32
+ &:focus {
33
+ background-color: #007bb4;
34
+ }
35
+
36
+ &[disabled] {
37
+
38
+ &,
39
+ &:hover,
40
+ &:focus {
41
+ background-color: #f3f4f5;
42
+ color: #8d949b;
43
+ }
44
+ }
45
+ }
46
+ }
common/src/modules/elements/checkbox-input/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Input element Should render the component 1`] = `
4
+ <input
5
+ className="tribe-editor__input tribe-editor__input--checkbox"
6
+ type="checkbox"
7
+ />
8
+ `;
9
+
10
+ exports[`Input element Should render the component with checked 1`] = `
11
+ <input
12
+ checked={true}
13
+ className="tribe-editor__input tribe-editor__input--checkbox"
14
+ type="checkbox"
15
+ />
16
+ `;
17
+
18
+ exports[`Input element Should render the component with checked 2`] = `
19
+ <input
20
+ checked={false}
21
+ className="tribe-editor__input tribe-editor__input--checkbox"
22
+ type="checkbox"
23
+ />
24
+ `;
25
+
26
+ exports[`Input element Should render the component with class 1`] = `
27
+ <input
28
+ className="tribe-editor__input tribe-editor__input--checkbox checkbox-class"
29
+ type="checkbox"
30
+ />
31
+ `;
32
+
33
+ exports[`Input element Should render the component with extra props 1`] = `
34
+ <input
35
+ className="tribe-editor__input tribe-editor__input--checkbox"
36
+ id="checkbox-id"
37
+ type="checkbox"
38
+ />
39
+ `;
40
+
41
+ exports[`Input element Should render the component with onChange handler 1`] = `
42
+ <input
43
+ className="tribe-editor__input tribe-editor__input--checkbox"
44
+ onChange={[Function]}
45
+ type="checkbox"
46
+ />
47
+ `;
common/src/modules/elements/checkbox-input/__tests__/element.test.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import { noop } from 'lodash';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import CheckboxInput from '../element.js';
11
+
12
+ describe( 'Input element', () => {
13
+ it( 'Should render the component', () => {
14
+ const component = renderer.create( <CheckboxInput /> );
15
+ expect( component.toJSON() ).toMatchSnapshot();
16
+ } );
17
+
18
+ it( 'Should render the component with checked', () => {
19
+ const component1 = renderer.create( <CheckboxInput checked={ true } /> );
20
+ expect( component1.toJSON() ).toMatchSnapshot();
21
+ const component2 = renderer.create( <CheckboxInput checked={ false } /> );
22
+ expect( component2.toJSON() ).toMatchSnapshot();
23
+ } );
24
+
25
+ it( 'Should render the component with class', () => {
26
+ const component = renderer.create( <CheckboxInput className="checkbox-class" /> );
27
+ expect( component.toJSON() ).toMatchSnapshot();
28
+ } );
29
+
30
+ it( 'Should render the component with onChange handler', () => {
31
+ const component = renderer.create( <CheckboxInput onChange={ noop } /> );
32
+ expect( component.toJSON() ).toMatchSnapshot();
33
+ } );
34
+
35
+ it( 'Should render the component with extra props', () => {
36
+ const component = renderer.create( <CheckboxInput id="checkbox-id" /> );
37
+ expect( component.toJSON() ).toMatchSnapshot();
38
+ } );
39
+ } );
common/src/modules/elements/checkbox-input/element.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Input from '@moderntribe/common/elements/input/element';
12
+ import './style.pcss';
13
+
14
+ const CheckboxInput = ( {
15
+ checked,
16
+ className,
17
+ onChange,
18
+ ...rest
19
+ } ) => (
20
+ <Input
21
+ checked={ checked }
22
+ className={ classNames( 'tribe-editor__input--checkbox', className ) }
23
+ onChange={ onChange }
24
+ type="checkbox"
25
+ { ...rest }
26
+ />
27
+ );
28
+
29
+ CheckboxInput.propTypes = {
30
+ checked: PropTypes.bool,
31
+ className: PropTypes.string,
32
+ onChange: PropTypes.func,
33
+ };
34
+
35
+ export default CheckboxInput;
common/src/modules/elements/checkbox-input/style.pcss ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* increased specificity required to override gutenberg editor styles */
2
+ input[type=checkbox].tribe-editor__input--checkbox {
3
+ background-color: #ffffff;
4
+ border: 1px solid #E0E5E9;
5
+ border-radius: 0;
6
+
7
+ &:focus {
8
+ border: 1px solid #E0E5E9;
9
+ box-shadow: 0 0 0 1px #E0E5E9;
10
+ }
11
+
12
+ &:checked {
13
+ background-color: #ffffff;
14
+ border: 1px solid #E0E5E9;
15
+
16
+ &:focus {
17
+ border: 1px solid #E0E5E9;
18
+ box-shadow: 0 0 0 1px #E0E5E9;
19
+ }
20
+
21
+ &:before {
22
+ color: #11A0D2;
23
+ }
24
+ }
25
+ }
common/src/modules/elements/checkbox/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Checkbox Element renders checkbox 1`] = `
4
+ <div
5
+ className="tribe-editor__checkbox"
6
+ >
7
+ <input
8
+ checked={false}
9
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
10
+ onChange={[Function]}
11
+ type="checkbox"
12
+ />
13
+ <label
14
+ className="tribe-editor__checkbox__label"
15
+ />
16
+ </div>
17
+ `;
18
+
19
+ exports[`Checkbox Element renders checkbox with class 1`] = `
20
+ <div
21
+ className="tribe-editor__checkbox test-class"
22
+ >
23
+ <input
24
+ checked={false}
25
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
26
+ onChange={[Function]}
27
+ type="checkbox"
28
+ />
29
+ <label
30
+ className="tribe-editor__checkbox__label"
31
+ />
32
+ </div>
33
+ `;
34
+
35
+ exports[`Checkbox Element renders checkbox with id 1`] = `
36
+ <div
37
+ className="tribe-editor__checkbox"
38
+ >
39
+ <input
40
+ checked={false}
41
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
42
+ id="test-id"
43
+ onChange={[Function]}
44
+ type="checkbox"
45
+ />
46
+ <label
47
+ className="tribe-editor__checkbox__label"
48
+ htmlFor="test-id"
49
+ />
50
+ </div>
51
+ `;
52
+
53
+ exports[`Checkbox Element renders checkbox with label 1`] = `
54
+ <div
55
+ className="tribe-editor__checkbox"
56
+ >
57
+ <input
58
+ checked={false}
59
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
60
+ onChange={[Function]}
61
+ type="checkbox"
62
+ />
63
+ <label
64
+ className="tribe-editor__checkbox__label"
65
+ >
66
+ Test Label
67
+ </label>
68
+ </div>
69
+ `;
70
+
71
+ exports[`Checkbox Element renders checkbox with name 1`] = `
72
+ <div
73
+ className="tribe-editor__checkbox"
74
+ >
75
+ <input
76
+ checked={false}
77
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
78
+ name="test-name"
79
+ onChange={[Function]}
80
+ type="checkbox"
81
+ />
82
+ <label
83
+ className="tribe-editor__checkbox__label"
84
+ />
85
+ </div>
86
+ `;
87
+
88
+ exports[`Checkbox Element renders checkbox with onChange handler 1`] = `
89
+ <div
90
+ className="tribe-editor__checkbox"
91
+ >
92
+ <input
93
+ checked={false}
94
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
95
+ onChange={[MockFunction]}
96
+ type="checkbox"
97
+ />
98
+ <label
99
+ className="tribe-editor__checkbox__label"
100
+ />
101
+ </div>
102
+ `;
103
+
104
+ exports[`Checkbox Element renders checkbox with value 1`] = `
105
+ <div
106
+ className="tribe-editor__checkbox"
107
+ >
108
+ <input
109
+ checked={false}
110
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
111
+ onChange={[Function]}
112
+ type="checkbox"
113
+ value="Test Value"
114
+ />
115
+ <label
116
+ className="tribe-editor__checkbox__label"
117
+ />
118
+ </div>
119
+ `;
120
+
121
+ exports[`Checkbox Element renders checked checkbox 1`] = `
122
+ <div
123
+ className="tribe-editor__checkbox"
124
+ >
125
+ <input
126
+ checked={true}
127
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
128
+ onChange={[Function]}
129
+ type="checkbox"
130
+ />
131
+ <label
132
+ className="tribe-editor__checkbox__label"
133
+ />
134
+ </div>
135
+ `;
136
+
137
+ exports[`Checkbox Element renders disabled checkbox 1`] = `
138
+ <div
139
+ className="tribe-editor__checkbox"
140
+ >
141
+ <input
142
+ checked={false}
143
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
144
+ disabled={true}
145
+ onChange={[Function]}
146
+ type="checkbox"
147
+ />
148
+ <label
149
+ className="tribe-editor__checkbox__label"
150
+ />
151
+ </div>
152
+ `;
153
+
154
+ exports[`Checkbox Element renders unchecked checkbox 1`] = `
155
+ <div
156
+ className="tribe-editor__checkbox"
157
+ >
158
+ <input
159
+ checked={false}
160
+ className="tribe-editor__input tribe-editor__input--checkbox tribe-editor__checkbox__input"
161
+ onChange={[Function]}
162
+ type="checkbox"
163
+ />
164
+ <label
165
+ className="tribe-editor__checkbox__label"
166
+ />
167
+ </div>
168
+ `;
common/src/modules/elements/checkbox/__tests__/element.test.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { Checkbox } from '@moderntribe/common/elements';
10
+
11
+ describe( 'Checkbox Element', () => {
12
+ it( 'renders checkbox', () => {
13
+ const component = renderer.create( <Checkbox /> );
14
+ expect( component.toJSON() ).toMatchSnapshot();
15
+ } );
16
+
17
+ it( 'renders checked checkbox', () => {
18
+ const component = renderer.create( <Checkbox checked={ true } /> );
19
+ expect( component.toJSON() ).toMatchSnapshot();
20
+ } );
21
+
22
+ it( 'renders unchecked checkbox', () => {
23
+ const component = renderer.create( <Checkbox checked={ false } /> );
24
+ expect( component.toJSON() ).toMatchSnapshot();
25
+ } );
26
+
27
+ it( 'renders checkbox with class', () => {
28
+ const component = renderer.create( <Checkbox className="test-class" /> );
29
+ expect( component.toJSON() ).toMatchSnapshot();
30
+ } );
31
+
32
+ it( 'renders disabled checkbox', () => {
33
+ const component = renderer.create( <Checkbox disabled={ true } /> );
34
+ expect( component.toJSON() ).toMatchSnapshot();
35
+ } );
36
+
37
+ it( 'renders checkbox with id', () => {
38
+ const component = renderer.create( <Checkbox id="test-id" /> );
39
+ expect( component.toJSON() ).toMatchSnapshot();
40
+ } );
41
+
42
+ it( 'renders checkbox with label', () => {
43
+ const component = renderer.create( <Checkbox label="Test Label" /> );
44
+ expect( component.toJSON() ).toMatchSnapshot();
45
+ } );
46
+
47
+ it( 'renders checkbox with name', () => {
48
+ const component = renderer.create( <Checkbox name="test-name" /> );
49
+ expect( component.toJSON() ).toMatchSnapshot();
50
+ } );
51
+
52
+ it( 'renders checkbox with value', () => {
53
+ const component = renderer.create( <Checkbox value="Test Value" /> );
54
+ expect( component.toJSON() ).toMatchSnapshot();
55
+ } );
56
+
57
+ it( 'renders checkbox with onChange handler', () => {
58
+ const onChange = jest.fn();
59
+ const component = renderer.create( <Checkbox onChange={ onChange } /> );
60
+ expect( component.toJSON() ).toMatchSnapshot();
61
+ } );
62
+
63
+ it( 'executes checkbox with onChange handler', () => {
64
+ const onChange = jest.fn();
65
+ const component = mount( <Checkbox onChange={ onChange } /> );
66
+ component.find( 'input' ).simulate( 'change' );
67
+ expect( onChange ).toHaveBeenCalled();
68
+ expect( onChange ).toHaveBeenCalledTimes( 1 );
69
+ } );
70
+ } );
common/src/modules/elements/checkbox/element.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import { noop } from 'lodash';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { CheckboxInput } from '@moderntribe/common/elements';
13
+
14
+ const Checkbox = ( {
15
+ checked,
16
+ className,
17
+ disabled,
18
+ id,
19
+ label,
20
+ onChange,
21
+ name,
22
+ value,
23
+ } ) => {
24
+ return (
25
+ <div className={ classNames( 'tribe-editor__checkbox', className ) }>
26
+ <CheckboxInput
27
+ checked={ checked }
28
+ className="tribe-editor__checkbox__input"
29
+ disabled={ disabled }
30
+ id={ id }
31
+ name={ name }
32
+ onChange={ onChange }
33
+ value={ value }
34
+ />
35
+ <label
36
+ className="tribe-editor__checkbox__label"
37
+ htmlFor={ id }
38
+ >
39
+ { label }
40
+ </label>
41
+ </div>
42
+ );
43
+ };
44
+
45
+ Checkbox.defaultProps = {
46
+ checked: false,
47
+ onChange: noop,
48
+ }
49
+
50
+ Checkbox.propTypes = {
51
+ checked: PropTypes.bool.isRequired,
52
+ className: PropTypes.string,
53
+ disabled: PropTypes.bool,
54
+ id: PropTypes.string,
55
+ label: PropTypes.node,
56
+ name: PropTypes.string,
57
+ onChange: PropTypes.func,
58
+ value: PropTypes.string,
59
+ };
60
+
61
+ export default Checkbox;
common/src/modules/elements/counter/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Counter Element renders counter 1`] = `
4
+ <div
5
+ className="tribe-editor__counter"
6
+ >
7
+ <span
8
+ className="tribe-editor__counter__count"
9
+ />
10
+ <span
11
+ className="tribe-editor__counter__label"
12
+ />
13
+ </div>
14
+ `;
15
+
16
+ exports[`Counter Element renders counter with class 1`] = `
17
+ <div
18
+ className="tribe-editor__counter test-class"
19
+ >
20
+ <span
21
+ className="tribe-editor__counter__count"
22
+ />
23
+ <span
24
+ className="tribe-editor__counter__label"
25
+ />
26
+ </div>
27
+ `;
28
+
29
+ exports[`Counter Element renders counter with count 1`] = `
30
+ <div
31
+ className="tribe-editor__counter"
32
+ >
33
+ <span
34
+ className="tribe-editor__counter__count"
35
+ >
36
+ 42
37
+ </span>
38
+ <span
39
+ className="tribe-editor__counter__label"
40
+ />
41
+ </div>
42
+ `;
43
+
44
+ exports[`Counter Element renders counter with label 1`] = `
45
+ <div
46
+ className="tribe-editor__counter"
47
+ >
48
+ <span
49
+ className="tribe-editor__counter__count"
50
+ />
51
+ <span
52
+ className="tribe-editor__counter__label"
53
+ >
54
+ test-label
55
+ </span>
56
+ </div>
57
+ `;
common/src/modules/elements/counter/__tests__/element.test.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { Counter } from '@moderntribe/common/elements';
11
+
12
+ describe( 'Counter Element', () => {
13
+ it( 'renders counter', () => {
14
+ const component = renderer.create( <Counter /> );
15
+ expect( component.toJSON() ).toMatchSnapshot();
16
+ } );
17
+
18
+ it( 'renders counter with class', () => {
19
+ const component = renderer.create( <Counter className="test-class" /> );
20
+ expect( component.toJSON() ).toMatchSnapshot();
21
+ } );
22
+
23
+ it( 'renders counter with count', () => {
24
+ const component = renderer.create( <Counter count={ 42 } /> );
25
+ expect( component.toJSON() ).toMatchSnapshot();
26
+ } );
27
+
28
+ it( 'renders counter with label', () => {
29
+ const component = renderer.create( <Counter label="test-label" /> );
30
+ expect( component.toJSON() ).toMatchSnapshot();
31
+ } );
32
+ } );
common/src/modules/elements/counter/element.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import './style.pcss';
12
+
13
+ const Counter = ( {
14
+ className,
15
+ count,
16
+ label,
17
+ } ) => (
18
+ <div className={ classNames(
19
+ 'tribe-editor__counter',
20
+ className,
21
+ ) }>
22
+ <span className="tribe-editor__counter__count">
23
+ { count }
24
+ </span>
25
+ <span className="tribe-editor__counter__label">
26
+ { label }
27
+ </span>
28
+ </div>
29
+ );
30
+
31
+ Counter.propTypes = {
32
+ className: PropTypes.string,
33
+ count: PropTypes.number,
34
+ label: PropTypes.string,
35
+ };
36
+
37
+ export default Counter;
common/src/modules/elements/counter/style.pcss ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__counter {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ }
6
+
7
+ .tribe-editor__counter__count {
8
+ flex: none;
9
+ color: #AEB4BB;
10
+ font-size: 32px;
11
+ font-weight: bold;
12
+ line-height: 40px;
13
+ margin-bottom: 10px;
14
+ }
15
+
16
+ .tribe-editor__counter__label {
17
+ flex: none;
18
+ color: #AEB4BB;
19
+ font-size: 12px;
20
+ line-height: 14px;
21
+ letter-spacing: 0.04px;
22
+ }
common/src/modules/elements/creatable-select/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`CreatableSelect element Should render the component 1`] = `
4
+ <div
5
+ className="css-10nd86i tribe-editor__creatable-select"
6
+ onKeyDown={[Function]}
7
+ >
8
+ <div
9
+ className="css-vj8t7z tribe-editor__creatable-select__control"
10
+ onMouseDown={[Function]}
11
+ onTouchEnd={[Function]}
12
+ >
13
+ <div
14
+ className="css-1hwfws3 tribe-editor__creatable-select__value-container"
15
+ >
16
+ <div
17
+ className="css-1492t68 tribe-editor__creatable-select__placeholder"
18
+ >
19
+ Select...
20
+ </div>
21
+ <div
22
+ className="css-1g6gooi"
23
+ >
24
+ <div
25
+ className="tribe-editor__creatable-select__input"
26
+ style={
27
+ Object {
28
+ "display": "inline-block",
29
+ }
30
+ }
31
+ >
32
+ <input
33
+ aria-autocomplete="list"
34
+ autoCapitalize="none"
35
+ autoComplete="off"
36
+ autoCorrect="off"
37
+ disabled={false}
38
+ id="react-select-2-input"
39
+ onBlur={[Function]}
40
+ onChange={[Function]}
41
+ onFocus={[Function]}
42
+ spellCheck="false"
43
+ style={
44
+ Object {
45
+ "background": 0,
46
+ "border": 0,
47
+ "boxSizing": "content-box",
48
+ "color": "inherit",
49
+ "fontSize": "inherit",
50
+ "opacity": 1,
51
+ "outline": 0,
52
+ "padding": 0,
53
+ "width": "1px",
54
+ }
55
+ }
56
+ tabIndex="0"
57
+ type="text"
58
+ value=""
59
+ />
60
+ <div
61
+ style={
62
+ Object {
63
+ "height": 0,
64
+ "left": 0,
65
+ "overflow": "scroll",
66
+ "position": "absolute",
67
+ "top": 0,
68
+ "visibility": "hidden",
69
+ "whiteSpace": "pre",
70
+ }
71
+ }
72
+ >
73
+
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ <div
79
+ className="css-1wy0on6 tribe-editor__creatable-select__indicators"
80
+ >
81
+ <div
82
+ aria-hidden="true"
83
+ className="css-1ep9fjw tribe-editor__creatable-select__indicator tribe-editor__creatable-select__dropdown-indicator"
84
+ onMouseDown={[Function]}
85
+ onTouchEnd={[Function]}
86
+ >
87
+ <span
88
+ className="tribe-editor__creatable-select__dropdown-indicator"
89
+ >
90
+ arrow-down
91
+ </span>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ `;
97
+
98
+ exports[`CreatableSelect element Should render the component with class 1`] = `
99
+ <div
100
+ className="css-10nd86i tribe-editor__creatable-select test-class"
101
+ onKeyDown={[Function]}
102
+ >
103
+ <div
104
+ className="css-vj8t7z tribe-editor__creatable-select__control"
105
+ onMouseDown={[Function]}
106
+ onTouchEnd={[Function]}
107
+ >
108
+ <div
109
+ className="css-1hwfws3 tribe-editor__creatable-select__value-container"
110
+ >
111
+ <div
112
+ className="css-1492t68 tribe-editor__creatable-select__placeholder"
113
+ >
114
+ Select...
115
+ </div>
116
+ <div
117
+ className="css-1g6gooi"
118
+ >
119
+ <div
120
+ className="tribe-editor__creatable-select__input"
121
+ style={
122
+ Object {
123
+ "display": "inline-block",
124
+ }
125
+ }
126
+ >
127
+ <input
128
+ aria-autocomplete="list"
129
+ autoCapitalize="none"
130
+ autoComplete="off"
131
+ autoCorrect="off"
132
+ disabled={false}
133
+ id="react-select-3-input"
134
+ onBlur={[Function]}
135
+ onChange={[Function]}
136
+ onFocus={[Function]}
137
+ spellCheck="false"
138
+ style={
139
+ Object {
140
+ "background": 0,
141
+ "border": 0,
142
+ "boxSizing": "content-box",
143
+ "color": "inherit",
144
+ "fontSize": "inherit",
145
+ "opacity": 1,
146
+ "outline": 0,
147
+ "padding": 0,
148
+ "width": "1px",
149
+ }
150
+ }
151
+ tabIndex="0"
152
+ type="text"
153
+ value=""
154
+ />
155
+ <div
156
+ style={
157
+ Object {
158
+ "height": 0,
159
+ "left": 0,
160
+ "overflow": "scroll",
161
+ "position": "absolute",
162
+ "top": 0,
163
+ "visibility": "hidden",
164
+ "whiteSpace": "pre",
165
+ }
166
+ }
167
+ >
168
+
169
+ </div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ <div
174
+ className="css-1wy0on6 tribe-editor__creatable-select__indicators"
175
+ >
176
+ <div
177
+ aria-hidden="true"
178
+ className="css-1ep9fjw tribe-editor__creatable-select__indicator tribe-editor__creatable-select__dropdown-indicator"
179
+ onMouseDown={[Function]}
180
+ onTouchEnd={[Function]}
181
+ >
182
+ <span
183
+ className="tribe-editor__creatable-select__dropdown-indicator"
184
+ >
185
+ arrow-down
186
+ </span>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ `;
192
+
193
+ exports[`CreatableSelect element Should render the component with extra props 1`] = `
194
+ <div
195
+ className="css-10nd86i tribe-editor__creatable-select"
196
+ onKeyDown={[Function]}
197
+ >
198
+ <div
199
+ className="css-vj8t7z tribe-editor__creatable-select__control"
200
+ onMouseDown={[Function]}
201
+ onTouchEnd={[Function]}
202
+ >
203
+ <div
204
+ className="css-1hwfws3 tribe-editor__creatable-select__value-container"
205
+ >
206
+ <div
207
+ className="css-1492t68 tribe-editor__creatable-select__placeholder"
208
+ >
209
+ Select...
210
+ </div>
211
+ <input
212
+ className="css-14uuagi"
213
+ id="react-select-4-input"
214
+ onBlur={[Function]}
215
+ onChange={[Function]}
216
+ onFocus={[Function]}
217
+ readOnly={true}
218
+ tabIndex="0"
219
+ value=""
220
+ />
221
+ </div>
222
+ <div
223
+ className="css-1wy0on6 tribe-editor__creatable-select__indicators"
224
+ >
225
+ <div
226
+ aria-hidden="true"
227
+ className="css-1ep9fjw tribe-editor__creatable-select__indicator tribe-editor__creatable-select__dropdown-indicator"
228
+ onMouseDown={[Function]}
229
+ onTouchEnd={[Function]}
230
+ >
231
+ <span
232
+ className="tribe-editor__creatable-select__dropdown-indicator"
233
+ >
234
+ arrow-down
235
+ </span>
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ `;
common/src/modules/elements/creatable-select/__tests__/element.test.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import CreatableSelect from '../element.js';
10
+
11
+ const options = [
12
+ { label: 'Test 1', value: 'test-1' },
13
+ { label: 'Test 2', value: 'test-2' },
14
+ ];
15
+
16
+ describe( 'CreatableSelect element', () => {
17
+ it( 'Should render the component', () => {
18
+ const component = renderer.create( <CreatableSelect options={ options } /> );
19
+ expect( component.toJSON() ).toMatchSnapshot();
20
+ } );
21
+
22
+ it( 'Should render the component with class', () => {
23
+ const component = renderer.create( <CreatableSelect options={ options } className="test-class" /> );
24
+ expect( component.toJSON() ).toMatchSnapshot();
25
+ } );
26
+
27
+ it( 'Should render the component with extra props', () => {
28
+ const component = renderer.create( <CreatableSelect options={ options } isSearchable={ false } /> );
29
+ expect( component.toJSON() ).toMatchSnapshot();
30
+ } );
31
+ } );
common/src/modules/elements/creatable-select/element.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import { components } from 'react-select';
8
+ import ReactCreatableSelect from 'react-select/lib/Creatable';
9
+ import { Dashicon } from '@wordpress/components';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import './style.pcss';
15
+
16
+ const DropdownIndicator = ( props ) => (
17
+ components.DropdownIndicator && (
18
+ <components.DropdownIndicator { ...props }>
19
+ <Dashicon
20
+ className="tribe-editor__creatable-select__dropdown-indicator"
21
+ icon={ 'arrow-down' }
22
+ />
23
+ </components.DropdownIndicator>
24
+ )
25
+ );
26
+
27
+ const IndicatorSeparator = () => null;
28
+
29
+ /**
30
+ * There seems to be an issue with Creatable and a custom isValidNewOption
31
+ * prop needs to be passed in for this to work.
32
+ *
33
+ * See:
34
+ * - https://github.com/JedWatson/react-select/issues/2630
35
+ * - https://github.com/JedWatson/react-select/issues/2944
36
+ */
37
+ const CreatableSelect = ( { className, ...rest } ) => (
38
+ <ReactCreatableSelect
39
+ className={ classNames( 'tribe-editor__creatable-select', className ) }
40
+ classNamePrefix="tribe-editor__creatable-select"
41
+ components={ { DropdownIndicator, IndicatorSeparator } }
42
+ { ...rest }
43
+ />
44
+ );
45
+
46
+ CreatableSelect.propTypes = {
47
+ className: PropTypes.string,
48
+ };
49
+
50
+ export default CreatableSelect;
common/src/modules/elements/creatable-select/style.pcss ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__creatable-select {
2
+
3
+ .tribe-editor__creatable-select__control {
4
+ height: 40px;
5
+ border: 1px solid #E1E3E6;
6
+ border-radius: 3px;
7
+ background-color: #FFFFFF;
8
+
9
+ &:hover {
10
+ border: 1px solid #E1E3E6;
11
+ }
12
+
13
+ &--is-focused {
14
+ box-shadow: none;
15
+ }
16
+ }
17
+
18
+ .tribe-editor__creatable-select__value-container {
19
+ padding: 2px 5px 2px 15px;
20
+ }
21
+
22
+ .tribe-editor__creatable-select__single-value {
23
+ margin: 0;
24
+ max-width: calc(100% - 15px);
25
+ font-size: 16px;
26
+ line-height: 1.5;
27
+ }
28
+
29
+ .tribe-editor__creatable-select__input {
30
+ font-size: 16px;
31
+
32
+ & > input {
33
+ margin: 0;
34
+ line-height: 1.5;
35
+
36
+ &,
37
+ &:focus {
38
+ box-shadow: none;
39
+ }
40
+ }
41
+ }
42
+
43
+ svg.tribe-editor__creatable-select__dropdown-indicator {
44
+ fill: #555D66;
45
+ }
46
+
47
+ .tribe-editor__creatable-select__menu {
48
+ margin: 0;
49
+ border: 1px solid #E1E3E6;
50
+ border-top: none;
51
+ border-radius: 0;
52
+ border-bottom-left-radius: 3px;
53
+ border-bottom-right-radius: 3px;
54
+ box-shadow: none;
55
+ transform: translateY(-7px);
56
+ }
57
+
58
+ .tribe-editor__creatable-select__menu-list {
59
+ padding: 0;
60
+ }
61
+
62
+ .tribe-editor__creatable-select__option {
63
+ font-size: 16px;
64
+ line-height: 1.5;
65
+ padding: 3px 15px;
66
+
67
+ &--is-focused {
68
+ background-color: #E7F5FA;
69
+ }
70
+
71
+ &--is-selected {
72
+ background-color: #11A0D2;
73
+ }
74
+ }
75
+ }
common/src/modules/elements/day-picker-input/element.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import classNames from 'classnames';
6
+ import 'react-day-picker/lib/style.css';
7
+ import ReactDayPickerInput from 'react-day-picker/DayPickerInput';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import './style.pcss';
13
+
14
+ const DayPickerInput = ( props ) => (
15
+ <ReactDayPickerInput
16
+ classNames={ {
17
+ container: classNames(
18
+ 'tribe-editor__day-picker-input',
19
+ 'DayPickerInput',
20
+ ),
21
+ overlayWrapper: classNames(
22
+ 'tribe-editor__day-picker-input__overlay-wrapper',
23
+ 'DayPickerInput-OverlayWrapper',
24
+ ),
25
+ overlay: classNames(
26
+ 'tribe-editor__day-picker-input__overlay',
27
+ 'DayPickerInput-Overlay',
28
+ ),
29
+ } }
30
+ { ...props }
31
+ />
32
+ );
33
+
34
+ export default DayPickerInput;
common/src/modules/elements/day-picker-input/style.pcss ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__day-picker-input.DayPickerInput {
2
+
3
+ & > input {
4
+ border: 1px solid #e1e3e6;
5
+ color: #545d66;
6
+ font-size: 16px;
7
+ line-height: 24px;
8
+ padding: 7px 15px;
9
+ width: 100%;
10
+ height: 40px;
11
+
12
+ &:disabled {
13
+ color: #AEB4BB;
14
+ }
15
+ }
16
+ }
17
+
18
+ /* -----------------------------------------------------------
19
+ DayPicker Input Calender Styles
20
+ ----------------------------------------------------------- */
21
+
22
+ .tribe-editor__day-picker-input {
23
+
24
+ .DayPickerInput-Overlay {
25
+ padding: 20px;
26
+ z-index: 10;
27
+ }
28
+
29
+ .DayPicker {
30
+ width: 100%;
31
+ }
32
+
33
+ .DayPicker-Month {
34
+ margin: 0;
35
+ }
36
+
37
+ .DayPicker-Caption > div,
38
+ .DayPicker-Weekday,
39
+ .DayPicker-Day {
40
+ color: #545d66;
41
+ font-family: 'Helvetica', 'sans-serif';
42
+ font-weight: normal;
43
+ }
44
+
45
+ .DayPicker-Caption > div {
46
+ font-size: 16px;
47
+ margin-bottom: 12px;
48
+ text-align: center;
49
+ }
50
+
51
+ .DayPicker-Weekday {
52
+ font-size: 12px;
53
+ }
54
+
55
+ .DayPicker-Day {
56
+ font-size: 14px;
57
+
58
+ &:hover {
59
+ color: #007bb4;
60
+ background-color: #ffffff;
61
+ }
62
+ }
63
+
64
+ .DayPicker-Day--today {
65
+ color: #545D66;
66
+ }
67
+
68
+ .DayPicker-Day--disabled {
69
+ pointer-events: none;
70
+ color: #cccccc;
71
+ }
72
+
73
+ .DayPicker-Day--selected:not(.DayPicker-Day--outside) {
74
+ border-radius: 0;
75
+ background-color: #009fd4;
76
+ color: #ffffff;
77
+
78
+ &:hover {
79
+ background-color: #007bb4;
80
+ color: #ffffff;
81
+ }
82
+ }
83
+
84
+ .DayPicker-NavButton--prev {
85
+ left: 0;
86
+ top: 0;
87
+ }
88
+
89
+ .DayPicker-NavButton--next {
90
+ right: 0;
91
+ top: 0;
92
+ }
93
+
94
+ .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside) {
95
+
96
+ &:hover {
97
+ background-color: #ffffff;
98
+ }
99
+ }
100
+
101
+ .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside) {
102
+ background-color: #e7f5fa;
103
+ color: #545d66;
104
+
105
+ &:hover {
106
+ color: #007bb4;
107
+ }
108
+ }
109
+ }
common/src/modules/elements/heading/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<Heading> <h1> 1`] = `
4
+ <h1
5
+ className="tribe-editor__heading tribe-editor__heading--h1"
6
+ >
7
+ Modern Tribe
8
+ </h1>
9
+ `;
10
+
11
+ exports[`<Heading> <h2> 1`] = `
12
+ <h2
13
+ className="tribe-editor__heading tribe-editor__heading--h2"
14
+ >
15
+ Modern Tribe
16
+ </h2>
17
+ `;
18
+
19
+ exports[`<Heading> <h3> 1`] = `
20
+ <h3
21
+ className="tribe-editor__heading tribe-editor__heading--h3"
22
+ >
23
+ Modern Tribe
24
+ </h3>
25
+ `;
26
+
27
+ exports[`<Heading> <h4> 1`] = `
28
+ <h4
29
+ className="tribe-editor__heading tribe-editor__heading--h4"
30
+ >
31
+ Modern Tribe
32
+ </h4>
33
+ `;
34
+
35
+ exports[`<Heading> <h5> 1`] = `
36
+ <h5
37
+ className="tribe-editor__heading tribe-editor__heading--h5"
38
+ >
39
+ Modern Tribe
40
+ </h5>
41
+ `;
42
+
43
+ exports[`<Heading> <h6> 1`] = `
44
+ <h6
45
+ className="tribe-editor__heading tribe-editor__heading--h6"
46
+ >
47
+ Modern Tribe
48
+ </h6>
49
+ `;
common/src/modules/elements/heading/__tests__/element.test.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+
3
+ import Heading from '../element';
4
+
5
+ describe( '<Heading>', () => {
6
+ test( '<h1>', () => {
7
+ const component = renderer.create(
8
+ <Heading level={ 1 }>Modern Tribe</Heading>,
9
+ );
10
+ expect( component.toJSON() ).toMatchSnapshot();
11
+ } );
12
+
13
+ test( '<h2>', () => {
14
+ const component = renderer.create(
15
+ <Heading level={ 2 }>Modern Tribe</Heading>,
16
+ );
17
+ expect( component.toJSON() ).toMatchSnapshot();
18
+ } );
19
+
20
+ test( '<h3>', () => {
21
+ const component = renderer.create(
22
+ <Heading level={ 3 }>Modern Tribe</Heading>,
23
+ );
24
+ expect( component.toJSON() ).toMatchSnapshot();
25
+ } );
26
+
27
+ test( '<h4>', () => {
28
+ const component = renderer.create(
29
+ <Heading level={ 4 }>Modern Tribe</Heading>,
30
+ );
31
+ expect( component.toJSON() ).toMatchSnapshot();
32
+ } );
33
+
34
+ test( '<h5>', () => {
35
+ const component = renderer.create(
36
+ <Heading level={ 5 }>Modern Tribe</Heading>,
37
+ );
38
+ expect( component.toJSON() ).toMatchSnapshot();
39
+ } );
40
+
41
+ test( '<h6>', () => {
42
+ const component = renderer.create(
43
+ <Heading level={ 6 }>Modern Tribe</Heading>,
44
+ );
45
+ expect( component.toJSON() ).toMatchSnapshot();
46
+ } );
47
+ } );
common/src/modules/elements/heading/element.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import './style.pcss';
12
+
13
+ const Heading = ( { level, children, className } ) => {
14
+ const HeadingLevel = `h${ level }`;
15
+ const headingClassName = classNames(
16
+ 'tribe-editor__heading',
17
+ `tribe-editor__heading--h${ level }`,
18
+ className,
19
+ );
20
+ return (
21
+ <HeadingLevel className={ headingClassName }>
22
+ { children }
23
+ </HeadingLevel>
24
+ );
25
+ };
26
+
27
+ Heading.propTypes = {
28
+ children: PropTypes.node.isRequired,
29
+ level: PropTypes.oneOf( [ 1, 2, 3, 4, 5, 6 ] ).isRequired,
30
+ };
31
+
32
+ export default Heading;
common/src/modules/elements/heading/style.pcss ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__heading {
2
+ font-family: 'Helvetica', 'Arial', 'sans-serif';
3
+ color: #000;
4
+ }
5
+
6
+ .tribe-editor__heading--h1 {
7
+ font-size: 2.375rem; /* 38pts */
8
+ }
9
+
10
+ .tribe-editor__heading--h2 {
11
+ font-size: 1.3125rem; /* 21pts */
12
+ }
13
+
14
+ .tribe-editor__heading--h3 {
15
+ font-size: 1rem; /* 16pts */
16
+ }
common/src/modules/elements/image-upload/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ImageUpload renders the component 1`] = `
4
+ <div
5
+ className="tribe-editor__image-upload"
6
+ >
7
+ <div
8
+ className="tribe-editor__image-upload__content"
9
+ >
10
+ <button>
11
+ Media Upload
12
+ </button>
13
+ </div>
14
+ </div>
15
+ `;
16
+
17
+ exports[`ImageUpload renders upload image button 1`] = `
18
+ <div
19
+ className="tribe-editor__image-upload"
20
+ >
21
+ <div
22
+ className="tribe-editor__image-upload__content"
23
+ >
24
+ <button>
25
+ Media Upload
26
+ </button>
27
+ </div>
28
+ </div>
29
+ `;
30
+
31
+ exports[`ImageUpload renders uploaded image 1`] = `
32
+ <div
33
+ className="tribe-editor__image-upload tribe-editor__image-upload--has-image"
34
+ >
35
+ <div
36
+ className="tribe-editor__image-upload__content"
37
+ >
38
+ <div
39
+ className="tribe-editor__image-upload__image-wrapper"
40
+ >
41
+ <img
42
+ alt="test-alt"
43
+ className="tribe-editor__image tribe-editor__image-upload__image"
44
+ src="test-src"
45
+ />
46
+ <button
47
+ className="tribe-editor__button tribe-editor__image-upload__remove-button"
48
+ onClick={[MockFunction]}
49
+ type="button"
50
+ >
51
+ <span>
52
+ icon
53
+ </span>
54
+ <span
55
+ className="tribe-editor__image-upload__remove-button-text"
56
+ >
57
+ remove
58
+ </span>
59
+ </button>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ `;
64
+
65
+ exports[`ImageUpload renders with class 1`] = `
66
+ <div
67
+ className="tribe-editor__image-upload test-class"
68
+ >
69
+ <div
70
+ className="tribe-editor__image-upload__content"
71
+ >
72
+ <button>
73
+ Media Upload
74
+ </button>
75
+ </div>
76
+ </div>
77
+ `;
78
+
79
+ exports[`ImageUpload renders with description 1`] = `
80
+ <div
81
+ className="tribe-editor__image-upload"
82
+ >
83
+ <div
84
+ className="tribe-editor__image-upload__content"
85
+ >
86
+ <p
87
+ className="tribe-editor__image-upload__description"
88
+ >
89
+ The Next Generation of Digital Agency
90
+ </p>
91
+ <button>
92
+ Media Upload
93
+ </button>
94
+ </div>
95
+ </div>
96
+ `;
97
+
98
+ exports[`ImageUpload renders with title 1`] = `
99
+ <div
100
+ className="tribe-editor__image-upload"
101
+ >
102
+ <h3
103
+ className="tribe-editor__image-upload__title"
104
+ >
105
+ Modern Tribe
106
+ </h3>
107
+ <div
108
+ className="tribe-editor__image-upload__content"
109
+ >
110
+ <button>
111
+ Media Upload
112
+ </button>
113
+ </div>
114
+ </div>
115
+ `;
116
+
117
+ exports[`renderImage renders the image and button 1`] = `
118
+ <div
119
+ className="tribe-editor__image-upload__image-wrapper"
120
+ >
121
+ <img
122
+ alt="test-alt"
123
+ className="tribe-editor__image tribe-editor__image-upload__image"
124
+ src="test-src"
125
+ />
126
+ <button
127
+ className="tribe-editor__button tribe-editor__image-upload__remove-button"
128
+ disabled={false}
129
+ onClick={[MockFunction]}
130
+ type="button"
131
+ >
132
+ <span>
133
+ icon
134
+ </span>
135
+ <span
136
+ className="tribe-editor__image-upload__remove-button-text"
137
+ >
138
+ remove
139
+ </span>
140
+ </button>
141
+ </div>
142
+ `;
143
+
144
+ exports[`renderImage renders the image and disabled button 1`] = `
145
+ <div
146
+ className="tribe-editor__image-upload__image-wrapper"
147
+ >
148
+ <img
149
+ alt="test-alt"
150
+ className="tribe-editor__image tribe-editor__image-upload__image"
151
+ src="test-src"
152
+ />
153
+ <button
154
+ className="tribe-editor__button tribe-editor__image-upload__remove-button"
155
+ disabled={true}
156
+ onClick={[MockFunction]}
157
+ type="button"
158
+ >
159
+ <span>
160
+ icon
161
+ </span>
162
+ <span
163
+ className="tribe-editor__image-upload__remove-button-text"
164
+ >
165
+ remove
166
+ </span>
167
+ </button>
168
+ </div>
169
+ `;
170
+
171
+ exports[`renderImageUploadButton renders the button 1`] = `
172
+ <button
173
+ className="tribe-editor__button tribe-editor__button--sm tribe-editor__image-upload__upload-button"
174
+ disabled={false}
175
+ onClick={[MockFunction]}
176
+ type="button"
177
+ >
178
+ label
179
+ </button>
180
+ `;
181
+
182
+ exports[`renderImageUploadButton renders the button disabled 1`] = `
183
+ <button
184
+ className="tribe-editor__button tribe-editor__button--sm tribe-editor__image-upload__upload-button"
185
+ disabled={true}
186
+ onClick={[MockFunction]}
187
+ type="button"
188
+ >
189
+ label
190
+ </button>
191
+ `;
common/src/modules/elements/image-upload/__tests__/element.test.js ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import ImageUpload, {
10
+ renderImageUploadButton,
11
+ renderImage,
12
+ } from '@moderntribe/common/elements/image-upload/element';
13
+
14
+ jest.mock( '@wordpress/editor', () => ( {
15
+ MediaUpload: () => ( <button>Media Upload</button> ),
16
+ } ) );
17
+
18
+ jest.mock( '@moderntribe/common/icons', () => ( {
19
+ Close: () => <span>icon</span>,
20
+ } ) );
21
+
22
+ describe( 'renderImageUploadButton', () => {
23
+ const open = jest.fn();
24
+
25
+ afterEach( () => {
26
+ open.mockClear();
27
+ } );
28
+
29
+ it( 'renders the button', () => {
30
+ const component = renderer.create( renderImageUploadButton( false, 'label' )( { open } ) );
31
+ expect( component.toJSON() ).toMatchSnapshot();
32
+ } );
33
+
34
+ it( 'renders the button disabled', () => {
35
+ const component = renderer.create( renderImageUploadButton( true, 'label' )( { open } ) );
36
+ expect( component.toJSON() ).toMatchSnapshot();
37
+ } );
38
+
39
+ it( 'executes the open action when the mediaUpload is fired', () => {
40
+ const component = mount( renderImageUploadButton( false, 'label' )( { open } ) );
41
+ component.find( 'button' ).simulate( 'click' );
42
+ expect( open ).toHaveBeenCalled();
43
+ expect( open ).toHaveBeenCalledTimes( 1 );
44
+ } );
45
+ } );
46
+
47
+ describe( 'renderImage', () => {
48
+ const onRemove = jest.fn();
49
+ const image = {
50
+ id: 42,
51
+ src: 'test-src',
52
+ alt: 'test-alt',
53
+ };
54
+
55
+ afterEach( () => {
56
+ onRemove.mockClear();
57
+ } );
58
+
59
+ it( 'renders the image and button', () => {
60
+ const component = renderer.create( renderImage( false, image, onRemove ) );
61
+ expect( component.toJSON() ).toMatchSnapshot();
62
+ } );
63
+
64
+ it( 'renders the image and disabled button', () => {
65
+ const component = renderer.create( renderImage( true, image, onRemove ) );
66
+ expect( component.toJSON() ).toMatchSnapshot();
67
+ } );
68
+
69
+ it( 'executes onRemove on click', () => {
70
+ const component = mount( renderImage( false, image, onRemove ) );
71
+ component.find( 'button' ).simulate( 'click' );
72
+ expect( onRemove ).toHaveBeenCalled();
73
+ expect( onRemove ).toHaveBeenCalledTimes( 1 );
74
+ } );
75
+ } );
76
+
77
+ describe( 'ImageUpload', () => {
78
+ const onRemove = jest.fn();
79
+ const onSelect = jest.fn();
80
+ let image;
81
+
82
+ beforeEach( () => {
83
+ image = {
84
+ id: 0,
85
+ src: '',
86
+ alt: '',
87
+ };
88
+ } );
89
+
90
+ afterEach( () => {
91
+ onRemove.mockClear();
92
+ onSelect.mockClear();
93
+ } );
94
+
95
+ it( 'renders the component', () => {
96
+ const component = renderer.create(
97
+ <ImageUpload
98
+ image={ image }
99
+ onSelect={ onSelect }
100
+ onRemove={ onRemove }
101
+ />
102
+ );
103
+ expect( component.toJSON() ).toMatchSnapshot();
104
+ } );
105
+
106
+ it( 'renders with title', () => {
107
+ const component = renderer.create(
108
+ <ImageUpload
109
+ image={ image }
110
+ onSelect={ onSelect }
111
+ onRemove={ onRemove }
112
+ title="Modern Tribe"
113
+ />
114
+ );
115
+ expect( component.toJSON() ).toMatchSnapshot();
116
+ } );
117
+
118
+ it( 'renders with description', () => {
119
+ const component = renderer.create(
120
+ <ImageUpload
121
+ image={ image }
122
+ onSelect={ onSelect}
123
+ onRemove={ onRemove }
124
+ description="The Next Generation of Digital Agency"
125
+ />
126
+ );
127
+ expect( component.toJSON() ).toMatchSnapshot();
128
+ } );
129
+
130
+ it( 'renders with class', () => {
131
+ const component = renderer.create(
132
+ <ImageUpload
133
+ image={ image }
134
+ onSelect={ onSelect }
135
+ onRemove={ onRemove }
136
+ className="test-class"
137
+ />
138
+ );
139
+ expect( component.toJSON() ).toMatchSnapshot();
140
+ } );
141
+
142
+ it( 'renders uploaded image', () => {
143
+ image = {
144
+ id: 42,
145
+ src: 'test-src',
146
+ alt: 'test-alt',
147
+ };
148
+ const component = renderer.create(
149
+ <ImageUpload
150
+ image={ image }
151
+ onSelect={ onSelect }
152
+ onRemove={ onRemove }
153
+ />
154
+ );
155
+ expect( component.toJSON() ).toMatchSnapshot();
156
+ } );
157
+
158
+ it( 'renders upload image button', () => {
159
+ const component = renderer.create(
160
+ <ImageUpload
161
+ image={ image }
162
+ onSelect={ onSelect }
163
+ onRemove={ onRemove }
164
+ />
165
+ );
166
+ expect( component.toJSON() ).toMatchSnapshot();
167
+ } );
168
+ } );
common/src/modules/elements/image-upload/element.js ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import { noop } from 'lodash';
8
+
9
+ /**
10
+ * WordPress dependencies
11
+ */
12
+ import { __ } from '@wordpress/i18n';
13
+ import { MediaUpload } from '@wordpress/editor';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import { Button, Image } from '@moderntribe/common/elements';
19
+ import { Close as CloseIcon } from '@moderntribe/common/icons';
20
+ import './style.pcss';
21
+
22
+ export const renderImageUploadButton = ( disabled, label ) => ( { open } ) => (
23
+ <Button
24
+ onClick={ open }
25
+ className={ [ 'tribe-editor__button--sm', 'tribe-editor__image-upload__upload-button' ] }
26
+ disabled={ disabled }
27
+ >
28
+ { label }
29
+ </Button>
30
+ );
31
+
32
+ export const renderImage = ( disabled, image, onRemove ) => (
33
+ <div className="tribe-editor__image-upload__image-wrapper">
34
+ <Image
35
+ src={ image.src }
36
+ alt={ image.alt }
37
+ className="tribe-editor__image-upload__image"
38
+ />
39
+ <Button
40
+ className="tribe-editor__image-upload__remove-button"
41
+ onClick={ onRemove }
42
+ disabled={ disabled }
43
+ >
44
+ <CloseIcon />
45
+ <span className="tribe-editor__image-upload__remove-button-text">
46
+ { __( 'remove', 'events-gutenberg' ) }
47
+ </span>
48
+ </Button>
49
+ </div>
50
+ );
51
+
52
+ const ImageUpload = ( {
53
+ buttonDisabled,
54
+ buttonLabel,
55
+ className,
56
+ description,
57
+ image,
58
+ onRemove,
59
+ onSelect,
60
+ removeButtonDisabled,
61
+ title,
62
+ } ) => {
63
+ const hasImageClass = { 'tribe-editor__image-upload--has-image': image.id };
64
+
65
+ return (
66
+ <div className={ classNames(
67
+ 'tribe-editor__image-upload',
68
+ hasImageClass,
69
+ className,
70
+ ) }>
71
+ { title && <h3 className="tribe-editor__image-upload__title">{ title }</h3> }
72
+ <div className="tribe-editor__image-upload__content">
73
+ { description && (
74
+ <p className="tribe-editor__image-upload__description">{ description }</p>
75
+ ) }
76
+ {
77
+ image.id
78
+ ? renderImage( removeButtonDisabled, image, onRemove )
79
+ : (
80
+ <MediaUpload
81
+ onSelect={ onSelect }
82
+ type="image"
83
+ render={ renderImageUploadButton( buttonDisabled, buttonLabel ) }
84
+ value={ image.id }
85
+ />
86
+ )
87
+ }
88
+ </div>
89
+ </div>
90
+ );
91
+ };
92
+
93
+ ImageUpload.propTypes = {
94
+ buttonDisabled: PropTypes.bool,
95
+ buttonLabel: PropTypes.string,
96
+ className: PropTypes.string,
97
+ description: PropTypes.string,
98
+ image: PropTypes.shape( {
99
+ alt: PropTypes.string.isRequired,
100
+ id: PropTypes.number.isRequired,
101
+ src: PropTypes.string.isRequired,
102
+ } ).isRequired,
103
+ onRemove: PropTypes.func.isRequired,
104
+ onSelect: PropTypes.func.isRequired,
105
+ removeButtonDisabled: PropTypes.bool,
106
+ title: PropTypes.string,
107
+ };
108
+
109
+ ImageUpload.defaultProps = {
110
+ onRemove: noop,
111
+ onSelect: noop,
112
+ };
113
+
114
+ export default ImageUpload;
common/src/modules/elements/image-upload/style.pcss ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__image-upload {}
2
+
3
+ .tribe-editor__image-upload__title {
4
+
5
+ /* extra classes to override gutenberg styles for h3 */
6
+ .edit-post-visual-editor .editor-block-list__block & {
7
+ padding: 0;
8
+ margin: 0 0 12px;
9
+ color: #000000;
10
+ font-size: 15px;
11
+ font-weight: bold;
12
+ line-height: 18px;
13
+ }
14
+ }
15
+
16
+ .tribe-editor__image-upload__content {
17
+ display: flex;
18
+ justify-content: space-between;
19
+ align-items: center;
20
+
21
+ .tribe-editor__image-upload--has-image & {
22
+ align-items: flex-start;
23
+ }
24
+ }
25
+
26
+ p.tribe-editor__image-upload__description {
27
+
28
+ .tribe-editor__image-upload__content & {
29
+ flex: none;
30
+ width: 52%;
31
+ font-family: Helvetica, sans-serif, arial;
32
+ font-size: 14px;
33
+ color: #545D66;
34
+ line-height: 18px;
35
+ margin: 0;
36
+ }
37
+ }
38
+
39
+ .tribe-editor__image-upload__upload-button {
40
+ flex: none;
41
+ margin-right: 10px;
42
+ }
43
+
44
+ .tribe-editor__image-upload__image-wrapper {
45
+ flex: none;
46
+ width: 42%;
47
+ max-width: 325px;
48
+ padding-left: 25px;
49
+ position: relative;
50
+ }
51
+
52
+ .tribe-editor__image-upload__remove-button {
53
+ position: absolute;
54
+ top: 10px;
55
+ right: 10px;
56
+ width: 32px;
57
+ height: 32px;
58
+ padding: 8px;
59
+ border-radius: 50%;
60
+ background-color: #F8F9FB;
61
+
62
+ & > svg {
63
+
64
+ &,
65
+ & path {
66
+ fill: #545D66;
67
+ }
68
+ }
69
+
70
+ &:hover,
71
+ &:focus {
72
+
73
+ & > svg {
74
+
75
+ &,
76
+ & path {
77
+ fill: #009FD4;
78
+ }
79
+ }
80
+ }
81
+
82
+ &:disabled {
83
+
84
+ &,
85
+ &:hover,
86
+ &:focus {
87
+
88
+ & > svg {
89
+
90
+ &,
91
+ & path {
92
+ fill: #AEB4BB;
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ /* visually hide remove button text */
100
+ .tribe-editor__image-upload__remove-button-text {
101
+ border: 0;
102
+ clip: rect(0 0 0 0);
103
+ height: 1px;
104
+ margin: -1px;
105
+ overflow: hidden;
106
+ padding: 0;
107
+ position: absolute;
108
+ width: 1px;
109
+ }
common/src/modules/elements/image/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Image Element renders image 1`] = `
4
+ <img
5
+ alt="test-alt"
6
+ className="tribe-editor__image"
7
+ src="test-src"
8
+ />
9
+ `;
10
+
11
+ exports[`Image Element renders image with class 1`] = `
12
+ <img
13
+ alt="test-alt"
14
+ className="tribe-editor__image test-class"
15
+ src="test-src"
16
+ />
17
+ `;
18
+
19
+ exports[`Image Element renders image with extra props 1`] = `
20
+ <img
21
+ alt="test-alt"
22
+ className="tribe-editor__image"
23
+ height="42"
24
+ src="test-src"
25
+ width="42"
26
+ />
27
+ `;
common/src/modules/elements/image/__tests__/element.test.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { Image } from '@moderntribe/common/elements';
10
+
11
+ let imageProps;
12
+
13
+ describe( 'Image Element', () => {
14
+ beforeEach( () => {
15
+ imageProps = {
16
+ src: 'test-src',
17
+ alt: 'test-alt',
18
+ };
19
+ } );
20
+
21
+ it( 'renders image', () => {
22
+ const component = renderer.create( <Image { ...imageProps } /> );
23
+ expect( component.toJSON() ).toMatchSnapshot();
24
+ } );
25
+
26
+ it( 'renders image with class', () => {
27
+ imageProps.className = 'test-class';
28
+ const component = renderer.create( <Image { ...imageProps } /> );
29
+ expect( component.toJSON() ).toMatchSnapshot();
30
+ } );
31
+
32
+ it( 'renders image with extra props', () => {
33
+ imageProps.width = "42";
34
+ imageProps.height = "42";
35
+ const component = renderer.create( <Image { ...imageProps } /> );
36
+ expect( component.toJSON() ).toMatchSnapshot();
37
+ } );
38
+ } );
common/src/modules/elements/image/element.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ const Image = ( {
9
+ alt,
10
+ className,
11
+ src,
12
+ ...rest,
13
+ } ) => (
14
+ <img
15
+ src={ src }
16
+ alt={ alt }
17
+ className={ classNames( 'tribe-editor__image', className ) }
18
+ { ...rest }
19
+ />
20
+ );
21
+
22
+ Image.propTypes = {
23
+ alt: PropTypes.string.isRequired,
24
+ className: PropTypes.string,
25
+ src: PropTypes.string.isRequired,
26
+ };
27
+
28
+ export default Image;
common/src/modules/elements/index.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export { default as Accordion } from './accordion/element';
2
+ export { default as BlockIcon } from '@moderntribe/common/elements/block-icon';
3
+ export { default as Button } from './button/element';
4
+
5
+ export { default as Counter } from './counter/element';
6
+ export { default as Image } from './image/element';
7
+ export { default as ImageUpload } from './image-upload/element';
8
+ export { default as LabeledItem } from './labeled-item/element';
9
+ export { default as LabelWithLink } from './label-with-link/element';
10
+ export { default as LabelWithModal } from './label-with-modal/element';
11
+ export { default as Link } from './link/element';
12
+ export { default as ModalButton } from './modal-button/element';
13
+ export { default as TimePicker } from './time-picker/element';
14
+ export { default as Tooltip } from './tooltip/element';
15
+ export { default as DayPickerInput } from './day-picker-input/element';
16
+ export { default as CreatableSelect } from './creatable-select/element';
17
+ export { default as Placeholder } from './placeholder/element';
18
+ export { default as Heading } from './heading/element';
19
+ export { default as Paragraph } from './paragraph/element';
20
+
21
+ // Inputs
22
+ export { default as Input } from './input/element';
23
+ export { default as UrlInput } from './url-input/element';
24
+ export { default as NumberInput } from './number-input/element';
25
+ export { default as Radio } from './radio/element';
26
+ export { default as RadioInput } from './radio-input/element';
27
+ export { default as Checkbox } from './checkbox/element';
28
+ export { default as CheckboxInput } from './checkbox-input/element';
29
+ export { default as Select } from './select/element';
30
+ export { default as Textarea } from './textarea/element';
31
+
32
+ /**
33
+ * @todo move this into Editor Module
34
+ */
35
+
36
+ import './style.pcss'
common/src/modules/elements/input/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Input element Should render the component 1`] = `
4
+ <input
5
+ className="tribe-editor__input"
6
+ type="text"
7
+ />
8
+ `;
9
+
10
+ exports[`Input element Should render the component with class 1`] = `
11
+ <input
12
+ className="tribe-editor__input input-class"
13
+ type="text"
14
+ />
15
+ `;
16
+
17
+ exports[`Input element Should render the component with extra props 1`] = `
18
+ <input
19
+ className="tribe-editor__input"
20
+ onChange={[Function]}
21
+ type="text"
22
+ />
23
+ `;
common/src/modules/elements/input/__tests__/element.test.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+ import { noop } from 'lodash';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Input from '../element.js';
12
+
13
+ describe( 'Input element', () => {
14
+ it( 'Should render the component', () => {
15
+ const component = renderer.create( <Input type="text" /> );
16
+ expect( component.toJSON() ).toMatchSnapshot();
17
+ } );
18
+
19
+ it( 'Should render the component with class', () => {
20
+ const component = renderer.create( <Input type="text" className="input-class" /> );
21
+ expect( component.toJSON() ).toMatchSnapshot();
22
+ } );
23
+
24
+ it( 'Should render the component with extra props', () => {
25
+ const component = renderer.create( <Input type="text" onChange={ noop } /> );
26
+ expect( component.toJSON() ).toMatchSnapshot();
27
+ } );
28
+ } );
common/src/modules/elements/input/element.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import './style.pcss';
12
+
13
+ const Input = ( {
14
+ className,
15
+ type,
16
+ ...rest,
17
+ } ) => (
18
+ <input
19
+ className={ classNames( 'tribe-editor__input', className ) }
20
+ type={ type }
21
+ { ...rest }
22
+ />
23
+ );
24
+
25
+ Input.propTypes = {
26
+ className: PropTypes.string,
27
+ type: PropTypes.string.isRequired,
28
+ };
29
+
30
+ export default Input;
common/src/modules/elements/input/style.pcss ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* increased specificity required to override gutenberg editor styles */
2
+ input.tribe-editor__input {
3
+
4
+ /* this list will grow with more input types used */
5
+ &[type=number],
6
+ &[type=text] {
7
+ color: #000000;
8
+ font-size: 16px;
9
+ line-height: 24px;
10
+ border: 1px solid #E1E3E6;
11
+ padding: 7px 15px;
12
+ margin: 0;
13
+ height: 40px;
14
+
15
+ &:disabled {
16
+ color: #AEB4BB;
17
+ }
18
+ }
19
+ }
common/src/modules/elements/label-with-link/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Label With Link Element renders a label with link 1`] = `
4
+ <div
5
+ className="tribe-editor__labeled-item tribe-editor__label-with-link"
6
+ >
7
+ <span
8
+ className="tribe-editor__labeled-item__label"
9
+ />
10
+ <a
11
+ className="tribe-editor__link tribe-editor__label-with-link__link"
12
+ href="#"
13
+ >
14
+ test-text
15
+ </a>
16
+ </div>
17
+ `;
18
+
19
+ exports[`Label With Link Element renders a label with link with class 1`] = `
20
+ <div
21
+ className="tribe-editor__labeled-item tribe-editor__label-with-link test-class"
22
+ >
23
+ <span
24
+ className="tribe-editor__labeled-item__label"
25
+ />
26
+ <a
27
+ className="tribe-editor__link tribe-editor__label-with-link__link"
28
+ href="#"
29
+ >
30
+ test-text
31
+ </a>
32
+ </div>
33
+ `;
34
+
35
+ exports[`Label With Link Element renders a label with link with label 1`] = `
36
+ <div
37
+ className="tribe-editor__labeled-item tribe-editor__label-with-link"
38
+ >
39
+ <span
40
+ className="tribe-editor__labeled-item__label"
41
+ >
42
+ test label
43
+ </span>
44
+ <a
45
+ className="tribe-editor__link tribe-editor__label-with-link__link"
46
+ href="#"
47
+ >
48
+ test-text
49
+ </a>
50
+ </div>
51
+ `;
common/src/modules/elements/label-with-link/__tests__/element.test.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import LabelWithLink from '../element';
10
+
11
+ describe( 'Label With Link Element', () => {
12
+ it( 'renders a label with link', () => {
13
+ const component = renderer.create(
14
+ <LabelWithLink linkHref="#" linkText="test-text" />
15
+ );
16
+ expect( component.toJSON() ).toMatchSnapshot();
17
+ } );
18
+
19
+ it( 'renders a label with link with class', () => {
20
+ const component = renderer.create(
21
+ <LabelWithLink linkHref="#" linkText="test-text" className="test-class" />
22
+ );
23
+ expect( component.toJSON() ).toMatchSnapshot();
24
+ } );
25
+
26
+ it( 'renders a label with link with label', () => {
27
+ const component = renderer.create(
28
+ <LabelWithLink linkHref="#" linkText="test-text" label="test label" />
29
+ );
30
+ expect( component.toJSON() ).toMatchSnapshot();
31
+ } );
32
+ } );
common/src/modules/elements/label-with-link/element.js ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Button from '@moderntribe/common/elements/button/element';
12
+ import LabeledItem from '@moderntribe/common/elements/labeled-item/element';
13
+ import Link from '@moderntribe/common/elements/link/element';
14
+ import './style.pcss';
15
+
16
+ const LabelWithLink = ( {
17
+ className,
18
+ label,
19
+ linkDisabled,
20
+ linkHref,
21
+ linkTarget,
22
+ linkText,
23
+ } ) => {
24
+ const getLink = () => {
25
+ const linkClass = 'tribe-editor__label-with-link__link';
26
+
27
+ return linkDisabled
28
+ ? (
29
+ <Button
30
+ className={ classNames( linkClass, `${ linkClass }--disabled` ) }
31
+ disabled={ true }
32
+ >
33
+ { linkText }
34
+ </Button>
35
+ )
36
+ : (
37
+ <Link
38
+ className={ linkClass }
39
+ href={ linkHref }
40
+ target={ linkTarget }
41
+ >
42
+ { linkText }
43
+ </Link>
44
+ );
45
+ };
46
+
47
+ return (
48
+ <LabeledItem
49
+ className={ classNames( 'tribe-editor__label-with-link', className ) }
50
+ label={ label }
51
+ >
52
+ { getLink() }
53
+ </LabeledItem>
54
+ );
55
+ };
56
+
57
+ LabelWithLink.propTypes = {
58
+ className: PropTypes.string,
59
+ label: PropTypes.node,
60
+ linkDisabled: PropTypes.bool,
61
+ linkHref: PropTypes.string.isRequired,
62
+ linkTarget: PropTypes.string,
63
+ linkText: PropTypes.string,
64
+ };
65
+
66
+ export default LabelWithLink;
common/src/modules/elements/label-with-link/style.pcss ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__label-with-link {
2
+
3
+ .tribe-editor__rsvp &,
4
+ .tribe-editor__ticket & {
5
+ display: flex;
6
+ align-items: center;
7
+ background-color: #FFFFFF;
8
+ padding: 10px 17px;
9
+ border: 1px solid #E1E3E6;
10
+ }
11
+
12
+ .tribe-editor__labeled-item__label {
13
+
14
+ .tribe-editor__rsvp &,
15
+ .tribe-editor__ticket & {
16
+ flex: auto;
17
+ color: #545D66;
18
+ font-size: 15px;
19
+ font-weight: bold;
20
+ line-height: 18px;
21
+ letter-spacing: 0.38px;
22
+ padding-right: 10px;
23
+ }
24
+ }
25
+
26
+ .tribe-editor__label-with-link__link {
27
+
28
+ .tribe-editor__rsvp &,
29
+ .tribe-editor__ticket & {
30
+ flex: none;
31
+ color: #009FD4;
32
+ font-size: 15px;
33
+ font-weight: bold;
34
+ line-height: 18px;
35
+ letter-spacing: 0.38px;
36
+ text-decoration: none;
37
+ box-shadow: none;
38
+ transition: color 0.2s ease;
39
+
40
+ &:hover,
41
+ &:focus {
42
+ color: #007BB4;
43
+ }
44
+ }
45
+ }
46
+
47
+ .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled {
48
+
49
+ .tribe-editor__rsvp &,
50
+ .tribe-editor__ticket & {
51
+ color: #AEB4BB;
52
+ }
53
+ }
54
+ }
common/src/modules/elements/label-with-modal/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Label With Modal Element renders a label with modal 1`] = `
4
+ <div
5
+ className="tribe-editor__labeled-item tribe-editor__label-with-modal"
6
+ >
7
+ <span
8
+ className="tribe-editor__labeled-item__label"
9
+ />
10
+ <div
11
+ className="tribe-editor__modal-button tribe-editor__label-with-modal__modal-button"
12
+ >
13
+ <button
14
+ className="tribe-editor__button tribe-editor__modal-button__button"
15
+ onClick={[Function]}
16
+ type="button"
17
+ />
18
+ </div>
19
+ </div>
20
+ `;
21
+
22
+ exports[`Label With Modal Element renders a label with modal with class 1`] = `
23
+ <div
24
+ className="tribe-editor__labeled-item tribe-editor__label-with-modal test-class"
25
+ >
26
+ <span
27
+ className="tribe-editor__labeled-item__label"
28
+ />
29
+ <div
30
+ className="tribe-editor__modal-button tribe-editor__label-with-modal__modal-button"
31
+ >
32
+ <button
33
+ className="tribe-editor__button tribe-editor__modal-button__button"
34
+ onClick={[Function]}
35
+ type="button"
36
+ />
37
+ </div>
38
+ </div>
39
+ `;
40
+
41
+ exports[`Label With Modal Element renders a label with modal with label 1`] = `
42
+ <div
43
+ className="tribe-editor__labeled-item tribe-editor__label-with-modal"
44
+ >
45
+ <span
46
+ className="tribe-editor__labeled-item__label"
47
+ >
48
+ test label
49
+ </span>
50
+ <div
51
+ className="tribe-editor__modal-button tribe-editor__label-with-modal__modal-button"
52
+ >
53
+ <button
54
+ className="tribe-editor__button tribe-editor__modal-button__button"
55
+ onClick={[Function]}
56
+ type="button"
57
+ />
58
+ </div>
59
+ </div>
60
+ `;
common/src/modules/elements/label-with-modal/__tests__/element.test.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import LabelWithModal from '@moderntribe/common/elements/label-with-modal/element';
10
+
11
+ describe( 'Label With Modal Element', () => {
12
+ it( 'renders a label with modal', () => {
13
+ const component = renderer.create( <LabelWithModal /> );
14
+ expect( component.toJSON() ).toMatchSnapshot();
15
+ } );
16
+
17
+ it( 'renders a label with modal with class', () => {
18
+ const component = renderer.create( <LabelWithModal className="test-class" /> );
19
+ expect( component.toJSON() ).toMatchSnapshot();
20
+ } );
21
+
22
+ it( 'renders a label with modal with label', () => {
23
+ const component = renderer.create( <LabelWithModal label="test label" /> );
24
+ expect( component.toJSON() ).toMatchSnapshot();
25
+ } );
26
+ } );
common/src/modules/elements/label-with-modal/element.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import { noop } from 'lodash';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import LabeledItem from '@moderntribe/common/elements/labeled-item/element';
13
+ import ModalButton from '@moderntribe/common/elements/modal-button/element';
14
+ import './style.pcss';
15
+
16
+ const LabelWithModal = ( {
17
+ className,
18
+ label,
19
+ modalButtonDisabled,
20
+ modalButtonLabel,
21
+ modalClassName,
22
+ modalContent,
23
+ modalOverlayClassName,
24
+ modalTitle,
25
+ onClick,
26
+ onClose,
27
+ onOpen,
28
+ } ) => (
29
+ <LabeledItem
30
+ className={ classNames( 'tribe-editor__label-with-modal', className ) }
31
+ label={ label }
32
+ >
33
+ <ModalButton
34
+ className="tribe-editor__label-with-modal__modal-button"
35
+ disabled={ modalButtonDisabled }
36
+ label={ modalButtonLabel }
37
+ modalClassName={ modalClassName }
38
+ modalContent={ modalContent }
39
+ modalOverlayClassName={ modalOverlayClassName }
40
+ modalTitle={ modalTitle }
41
+ onClick={ onClick }
42
+ onClose={ onClose }
43
+ onOpen={ onOpen }
44
+ />
45
+ </LabeledItem>
46
+ );
47
+
48
+ LabelWithModal.defaultProps = {
49
+ onClick: noop,
50
+ onClose: noop,
51
+ onOpen: noop,
52
+ };
53
+
54
+ LabelWithModal.propTypes = {
55
+ className: PropTypes.string,
56
+ label: PropTypes.node,
57
+ modalButtonDisabled: PropTypes.bool,
58
+ modalButtonLabel: PropTypes.string,
59
+ modalClassName: PropTypes.string,
60
+ modalContent: PropTypes.node,
61
+ modalOverlayClassName: PropTypes.string,
62
+ modalTitle: PropTypes.string,
63
+ onClick: PropTypes.func,
64
+ onClose: PropTypes.func,
65
+ onOpen: PropTypes.func,
66
+ };
67
+
68
+ export default LabelWithModal;
common/src/modules/elements/label-with-modal/style.pcss ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__label-with-modal {
2
+ display: flex;
3
+ align-items: center;
4
+ background-color: #FFFFFF;
5
+ padding: 11px 17px;
6
+ border: 1px solid #E1E3E6;
7
+ height: 40px;
8
+ }
9
+
10
+ .tribe-editor__labeled-item__label {
11
+
12
+ .tribe-editor__label-with-modal & {
13
+ flex: auto;
14
+ color: #545D66;
15
+ font-size: 15px;
16
+ font-weight: bold;
17
+ line-height: 18px;
18
+ letter-spacing: 0.38px;
19
+ }
20
+ }
21
+
22
+ .tribe-editor__label-with-modal__modal-button {
23
+
24
+ .tribe-editor__label-with-modal & {
25
+ flex: none;
26
+ }
27
+ }
28
+
29
+ .tribe-editor__modal-button__button {
30
+
31
+ .tribe-editor__label-with-modal & {
32
+ color: #009FD4;
33
+ font-size: 15px;
34
+ font-weight: bold;
35
+ line-height: 18px;
36
+ letter-spacing: 0.38px;
37
+ transition: color 0.2s ease;
38
+
39
+ &:hover,
40
+ &:focus {
41
+ color: #007BB4;
42
+ }
43
+
44
+ &:disabled {
45
+
46
+ &,
47
+ &:hover,
48
+ &:focus {
49
+ color: #AEB4BB;
50
+ }
51
+ }
52
+ }
53
+ }
common/src/modules/elements/labeled-item/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Labeled Item Element renders labeled item 1`] = `
4
+ <div
5
+ className="tribe-editor__labeled-item"
6
+ >
7
+ <span
8
+ className="tribe-editor__labeled-item__label"
9
+ />
10
+ Test
11
+ </div>
12
+ `;
13
+
14
+ exports[`Labeled Item Element renders labeled item with class 1`] = `
15
+ <div
16
+ className="tribe-editor__labeled-item test-class"
17
+ >
18
+ <span
19
+ className="tribe-editor__labeled-item__label"
20
+ />
21
+ Test
22
+ </div>
23
+ `;
24
+
25
+ exports[`Labeled Item Element renders labeled item with label 1`] = `
26
+ <div
27
+ className="tribe-editor__labeled-item"
28
+ >
29
+ <span
30
+ className="tribe-editor__labeled-item__label"
31
+ >
32
+ test label
33
+ </span>
34
+ Test
35
+ </div>
36
+ `;
37
+
38
+ exports[`Labeled Item Element renders labeled item with label element and for id 1`] = `
39
+ <div
40
+ className="tribe-editor__labeled-item"
41
+ >
42
+ <label
43
+ className="tribe-editor__labeled-item__label"
44
+ htmlFor="test-id"
45
+ >
46
+ test label
47
+ </label>
48
+ Test
49
+ </div>
50
+ `;
common/src/modules/elements/labeled-item/__tests__/element.test.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { LabeledItem } from '@moderntribe/common/elements';
10
+
11
+ describe( 'Labeled Item Element', () => {
12
+ it( 'renders labeled item', () => {
13
+ const component = renderer.create( <LabeledItem>Test</LabeledItem> );
14
+ expect( component.toJSON() ).toMatchSnapshot();
15
+ } );
16
+
17
+ it( 'renders labeled item with class', () => {
18
+ const component = renderer.create( <LabeledItem className="test-class">Test</LabeledItem> );
19
+ expect( component.toJSON() ).toMatchSnapshot();
20
+ } );
21
+
22
+ it( 'renders labeled item with label', () => {
23
+ const component = renderer.create( <LabeledItem label="test label">Test</LabeledItem> );
24
+ expect( component.toJSON() ).toMatchSnapshot();
25
+ } );
26
+
27
+ it( 'renders labeled item with label element and for id', () => {
28
+ const component = renderer.create(
29
+ <LabeledItem
30
+ label="test label"
31
+ isLabel={ true }
32
+ forId="test-id"
33
+ >
34
+ Test
35
+ </LabeledItem>
36
+ );
37
+ expect( component.toJSON() ).toMatchSnapshot();
38
+ } );
39
+ } );
common/src/modules/elements/labeled-item/element.js ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ const LabeledItem = ( {
9
+ className,
10
+ forId,
11
+ isLabel,
12
+ label,
13
+ children,
14
+ } ) => {
15
+ const renderLabel = (
16
+ isLabel
17
+ ? (
18
+ <label className="tribe-editor__labeled-item__label" htmlFor={ forId }>
19
+ { label }
20
+ </label>
21
+ )
22
+ : (
23
+ <span className="tribe-editor__labeled-item__label">
24
+ { label }
25
+ </span>
26
+ )
27
+ );
28
+
29
+ return (
30
+ <div className={ classNames(
31
+ 'tribe-editor__labeled-item',
32
+ className,
33
+ ) }>
34
+ { renderLabel }
35
+ { children }
36
+ </div>
37
+ );
38
+ };
39
+
40
+ LabeledItem.defaultProps = {
41
+ isLabel: false,
42
+ };
43
+
44
+ LabeledItem.propTypes = {
45
+ className: PropTypes.string,
46
+ isLabel: PropTypes.bool.isRequired,
47
+ forId: PropTypes.string,
48
+ label: PropTypes.node,
49
+ children: PropTypes.node.isRequired,
50
+ };
51
+
52
+ export default LabeledItem;
common/src/modules/elements/link/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Link Element renders button with class 1`] = `
4
+ <a
5
+ className="tribe-editor__link test-class"
6
+ href="#"
7
+ >
8
+ label
9
+ </a>
10
+ `;
11
+
12
+ exports[`Link Element renders button with prop 1`] = `
13
+ <a
14
+ className="tribe-editor__link"
15
+ href="#"
16
+ title="title"
17
+ >
18
+ label
19
+ </a>
20
+ `;
21
+
22
+ exports[`Link Element renders button with target 1`] = `
23
+ <a
24
+ className="tribe-editor__link"
25
+ href="#"
26
+ rel="noopener noreferrer"
27
+ target="_blank"
28
+ >
29
+ label
30
+ </a>
31
+ `;
32
+
33
+ exports[`Link Element renders link 1`] = `
34
+ <a
35
+ className="tribe-editor__link"
36
+ href="#"
37
+ >
38
+ label
39
+ </a>
40
+ `;
common/src/modules/elements/link/__tests__/element.test.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import Link from '../element.js';
10
+
11
+ describe( 'Link Element', () => {
12
+ it( 'renders link', () => {
13
+ const component = renderer.create(
14
+ <Link href="#">label</Link>
15
+ );
16
+ expect( component.toJSON() ).toMatchSnapshot();
17
+ } );
18
+
19
+ it( 'renders button with class', () => {
20
+ const component = renderer.create(
21
+ <Link className="test-class" href="#">label</Link>
22
+ );
23
+ expect( component.toJSON() ).toMatchSnapshot();
24
+ } );
25
+
26
+ it( 'renders button with target', () => {
27
+ const component = renderer.create(
28
+ <Link href="#" target="_blank">label</Link>
29
+ );
30
+ expect( component.toJSON() ).toMatchSnapshot();
31
+ } );
32
+
33
+ it( 'renders button with prop', () => {
34
+ const component = renderer.create(
35
+ <Link href="#" title="title">label</Link>
36
+ );
37
+ expect( component.toJSON() ).toMatchSnapshot();
38
+ } );
39
+ } );
common/src/modules/elements/link/element.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ const Link = ( {
9
+ children,
10
+ className,
11
+ href,
12
+ target,
13
+ ...props,
14
+ } ) => {
15
+ const getProps = () => {
16
+ const elemProps = { ...props };
17
+
18
+ if ( target === '_blank' ) {
19
+ elemProps.rel = 'noopener noreferrer';
20
+ }
21
+
22
+ return elemProps;
23
+ };
24
+
25
+ return (
26
+ <a
27
+ className={ classNames( 'tribe-editor__link', className ) }
28
+ href={ href }
29
+ target={ target }
30
+ { ...getProps() }
31
+ >
32
+ { children }
33
+ </a>
34
+ );
35
+ };
36
+
37
+ Link.propTypes = {
38
+ children: PropTypes.node,
39
+ className: PropTypes.string,
40
+ href: PropTypes.string.isRequired,
41
+ target: PropTypes.string,
42
+ };
43
+
44
+ export default Link;
common/src/modules/elements/modal-button/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Modal Button Element renders a modal button 1`] = `
4
+ <div
5
+ className="tribe-editor__modal-button"
6
+ >
7
+ <button
8
+ className="tribe-editor__button tribe-editor__modal-button__button"
9
+ onClick={[Function]}
10
+ type="button"
11
+ />
12
+ </div>
13
+ `;
14
+
15
+ exports[`Modal Button Element renders a modal button with class 1`] = `
16
+ <div
17
+ className="tribe-editor__modal-button test-class"
18
+ >
19
+ <button
20
+ className="tribe-editor__button tribe-editor__modal-button__button"
21
+ onClick={[Function]}
22
+ type="button"
23
+ />
24
+ </div>
25
+ `;
26
+
27
+ exports[`Modal Button Element renders a modal button with label 1`] = `
28
+ <div
29
+ className="tribe-editor__modal-button"
30
+ >
31
+ <button
32
+ className="tribe-editor__button tribe-editor__modal-button__button"
33
+ onClick={[Function]}
34
+ type="button"
35
+ >
36
+ Test Label
37
+ </button>
38
+ </div>
39
+ `;
40
+
41
+ exports[`Modal Button Element renders a modal button with onClick handler 1`] = `
42
+ <div
43
+ className="tribe-editor__modal-button"
44
+ >
45
+ <button
46
+ className="tribe-editor__button tribe-editor__modal-button__button"
47
+ onClick={[Function]}
48
+ type="button"
49
+ />
50
+ </div>
51
+ `;
common/src/modules/elements/modal-button/__tests__/element.test.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import { noop } from 'lodash';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import ModalButton from '@moderntribe/common/elements/modal-button/element';
11
+
12
+ describe( 'Modal Button Element', () => {
13
+ it( 'renders a modal button', () => {
14
+ const component = renderer.create( <ModalButton /> );
15
+ expect( component.toJSON() ).toMatchSnapshot();
16
+ } );
17
+
18
+ it( 'renders a modal button with class', () => {
19
+ const component = renderer.create( <ModalButton className="test-class" /> );
20
+ expect( component.toJSON() ).toMatchSnapshot();
21
+ } );
22
+
23
+ it( 'renders a modal button with onClick handler', () => {
24
+ const component = renderer.create( <ModalButton onClick={ noop } /> );
25
+ expect( component.toJSON() ).toMatchSnapshot();
26
+ } );
27
+
28
+ it( 'renders a modal button with label', () => {
29
+ const component = renderer.create( <ModalButton label="Test Label" /> );
30
+ expect( component.toJSON() ).toMatchSnapshot();
31
+ } );
32
+
33
+ it( 'executes onClick and onOpen handlers', () => {
34
+ const props = {
35
+ onClick: jest.fn(),
36
+ onOpen: jest.fn(),
37
+ };
38
+
39
+ const component = mount( <ModalButton { ...props } /> );
40
+ component.find( 'button.tribe-editor__modal-button__button' ).simulate( 'click' );
41
+ expect( props.onClick ).toHaveBeenCalled();
42
+ expect( props.onClick ).toHaveBeenCalledTimes( 1 );
43
+ expect( props.onOpen ).toHaveBeenCalled();
44
+ expect( props.onOpen ).toHaveBeenCalledTimes( 1 );
45
+ } );
46
+ } );
common/src/modules/elements/modal-button/element.js ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * WordPress dependencies
10
+ */
11
+ import { Modal } from '@wordpress/components';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import Button from '@moderntribe/common/elements/button/element';
17
+
18
+ class ModalButton extends PureComponent {
19
+ static propTypes = {
20
+ className: PropTypes.string,
21
+ disabled: PropTypes.bool,
22
+ label: PropTypes.string,
23
+ modalClassName: PropTypes.string,
24
+ modalContent: PropTypes.node,
25
+ modalOverlayClassName: PropTypes.string,
26
+ modalTitle: PropTypes.string,
27
+ onClick: PropTypes.func,
28
+ onClose: PropTypes.func,
29
+ onOpen: PropTypes.func,
30
+ };
31
+
32
+ constructor( props ) {
33
+ super( props );
34
+ this.state = {
35
+ isOpen: false,
36
+ };
37
+ }
38
+
39
+ onClick = ( e ) => {
40
+ this.props.onClick && this.props.onClick( e );
41
+ this.onOpen();
42
+ this.setState( { isOpen: true } );
43
+ };
44
+
45
+ onRequestClose = () => {
46
+ this.onClose();
47
+ this.setState( { isOpen: false } );
48
+ }
49
+
50
+ onOpen = () => this.props.onOpen && this.props.onOpen();
51
+
52
+ onClose = () => this.props.onClose && this.props.onClose();
53
+
54
+ renderModal = () => {
55
+ const {
56
+ modalClassName,
57
+ modalContent,
58
+ modalOverlayClassName,
59
+ modalTitle,
60
+ } = this.props;
61
+
62
+ return ( this.state.isOpen && (
63
+ <Modal
64
+ className={ classNames(
65
+ 'tribe-editor__modal-button__modal-content',
66
+ modalClassName,
67
+ ) }
68
+ onRequestClose={ this.onRequestClose }
69
+ overlayClassName={ classNames(
70
+ 'tribe-editor__modal-button__modal-overlay',
71
+ modalOverlayClassName,
72
+ ) }
73
+ title={ modalTitle }
74
+ >
75
+ { modalContent }
76
+ </Modal>
77
+ ) );
78
+ };
79
+
80
+ render() {
81
+ const { className, disabled, label } = this.props;
82
+ return (
83
+ <div className={ classNames(
84
+ 'tribe-editor__modal-button',
85
+ className,
86
+ ) }>
87
+ <Button
88
+ className="tribe-editor__modal-button__button"
89
+ onClick={ this.onClick }
90
+ disabled={ disabled }
91
+ >
92
+ { label }
93
+ </Button>
94
+ { this.renderModal() }
95
+ </div>
96
+ );
97
+ }
98
+ }
99
+
100
+ export default ModalButton;
common/src/modules/elements/number-input/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Input element Should render the component 1`] = `
4
+ <input
5
+ className="tribe-editor__input tribe-editor__input--number"
6
+ type="number"
7
+ />
8
+ `;
9
+
10
+ exports[`Input element Should render the component with class 1`] = `
11
+ <input
12
+ className="tribe-editor__input tribe-editor__input--number input-class"
13
+ type="number"
14
+ />
15
+ `;
16
+
17
+ exports[`Input element Should render the component with extra props 1`] = `
18
+ <input
19
+ className="tribe-editor__input tribe-editor__input--number"
20
+ id="input-id"
21
+ type="number"
22
+ />
23
+ `;
24
+
25
+ exports[`Input element Should render the component with max 1`] = `
26
+ <input
27
+ className="tribe-editor__input tribe-editor__input--number"
28
+ max={42}
29
+ type="number"
30
+ />
31
+ `;
32
+
33
+ exports[`Input element Should render the component with min 1`] = `
34
+ <input
35
+ className="tribe-editor__input tribe-editor__input--number"
36
+ min={-42}
37
+ type="number"
38
+ />
39
+ `;
40
+
41
+ exports[`Input element Should render the component with onChange handler 1`] = `
42
+ <input
43
+ className="tribe-editor__input tribe-editor__input--number"
44
+ onChange={[Function]}
45
+ type="number"
46
+ />
47
+ `;
48
+
49
+ exports[`Input element Should render the component with step 1`] = `
50
+ <input
51
+ className="tribe-editor__input tribe-editor__input--number"
52
+ step={10}
53
+ type="number"
54
+ />
55
+ `;
common/src/modules/elements/number-input/__tests__/element.test.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import { noop } from 'lodash';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import NumberInput from '../element.js';
11
+
12
+ describe( 'Input element', () => {
13
+ it( 'Should render the component', () => {
14
+ const component = renderer.create( <NumberInput /> );
15
+ expect( component.toJSON() ).toMatchSnapshot();
16
+ } );
17
+
18
+ it( 'Should render the component with class', () => {
19
+ const component = renderer.create( <NumberInput className="input-class" /> );
20
+ expect( component.toJSON() ).toMatchSnapshot();
21
+ } );
22
+
23
+ it( 'Should render the component with max', () => {
24
+ const component = renderer.create( <NumberInput max={ 42 } /> );
25
+ expect( component.toJSON() ).toMatchSnapshot();
26
+ } );
27
+
28
+ it( 'Should render the component with min', () => {
29
+ const component = renderer.create( <NumberInput min={ -42 } /> );
30
+ expect( component.toJSON() ).toMatchSnapshot();
31
+ } );
32
+
33
+ it( 'Should render the component with onChange handler', () => {
34
+ const component = renderer.create( <NumberInput onChange={ noop } /> );
35
+ expect( component.toJSON() ).toMatchSnapshot();
36
+ } );
37
+
38
+ it( 'Should render the component with step', () => {
39
+ const component = renderer.create( <NumberInput step={ 10 } /> );
40
+ expect( component.toJSON() ).toMatchSnapshot();
41
+ } );
42
+
43
+ it( 'Should render the component with extra props', () => {
44
+ const component = renderer.create( <NumberInput id="input-id" /> );
45
+ expect( component.toJSON() ).toMatchSnapshot();
46
+ } );
47
+ } );
common/src/modules/elements/number-input/element.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Input from '@moderntribe/common/elements/input/element';
12
+
13
+ const NumberInput = ( {
14
+ className,
15
+ max,
16
+ min,
17
+ onChange,
18
+ step,
19
+ ...rest
20
+ } ) => (
21
+ <Input
22
+ className={ classNames( 'tribe-editor__input--number', className ) }
23
+ max={ max }
24
+ min={ min }
25
+ onChange={ onChange }
26
+ step={ step }
27
+ type="number"
28
+ { ...rest }
29
+ />
30
+ );
31
+
32
+ NumberInput.propTypes = {
33
+ className: PropTypes.string,
34
+ max: PropTypes.number,
35
+ min: PropTypes.number,
36
+ onChange: PropTypes.func,
37
+ step: PropTypes.number,
38
+ };
39
+
40
+ export default NumberInput;
common/src/modules/elements/paragraph/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<Paragraph> default paragraph 1`] = `
4
+ <p
5
+ className="tribe-editor__paragraph tribe-editor__paragraph--medium"
6
+ >
7
+ Modern Tribe
8
+ </p>
9
+ `;
10
+
11
+ exports[`<Paragraph> smaller paragraph 1`] = `
12
+ <p
13
+ className="tribe-editor__paragraph tribe-editor__paragraph--small"
14
+ >
15
+ Modern Tribe
16
+ </p>
17
+ `;
common/src/modules/elements/paragraph/__tests__/element.test.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+
3
+ import Paragraph, { SIZES } from '../element';
4
+
5
+ describe( '<Paragraph>', () => {
6
+ test( 'default paragraph', () => {
7
+ const component = renderer.create(
8
+ <Paragraph>Modern Tribe</Paragraph>,
9
+ );
10
+ expect( component.toJSON() ).toMatchSnapshot();
11
+ } );
12
+
13
+ test( 'smaller paragraph', () => {
14
+ const component = renderer.create(
15
+ <Paragraph size={ SIZES.small }>Modern Tribe</Paragraph>,
16
+ );
17
+ expect( component.toJSON() ).toMatchSnapshot();
18
+ } );
19
+ } );
common/src/modules/elements/paragraph/element.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import './style.pcss';
12
+
13
+ export const SIZES = {
14
+ medium: 'medium',
15
+ small: 'small',
16
+ };
17
+
18
+ const Paragraph = ( { children, size, className } ) => (
19
+ <p
20
+ className={
21
+ classNames(
22
+ 'tribe-editor__paragraph',
23
+ `tribe-editor__paragraph--${ size }`,
24
+ className,
25
+ )
26
+ }
27
+ >
28
+ { children }
29
+ </p>
30
+ );
31
+
32
+ Paragraph.propTypes = {
33
+ children: PropTypes.node.isRequired,
34
+ size: PropTypes.oneOf( Object.keys( SIZES ) ),
35
+ };
36
+
37
+ Paragraph.defaultProps = {
38
+ size: SIZES.medium,
39
+ };
40
+
41
+ export default Paragraph;
common/src/modules/elements/paragraph/style.pcss ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__paragraph {
2
+ font-family: 'Helvetica', 'Arial', 'sans-serif';
3
+ line-height: 1.5;
4
+ font-weight: normal;
5
+
6
+ &--medium {
7
+ /* 16pt */
8
+ font-size: 1rem;
9
+ }
10
+
11
+ &--small {
12
+ /* 14pt */
13
+ font-size: 0.875rem;
14
+ }
15
+
16
+ a {
17
+ color: #11A0D2;
18
+
19
+ &:hover {
20
+ text-decoration: none;
21
+ color: #007BB4;
22
+ }
23
+ }
24
+ }
common/src/modules/elements/placeholder/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<Placeholder> component Custom Class name attached 1`] = `
4
+ <div
5
+ className="tribe-editor__placeholder custom-class-name"
6
+ >
7
+ Custom Text
8
+ </div>
9
+ `;
10
+
11
+ exports[`<Placeholder> component Default behavior 1`] = `
12
+ <div
13
+ className="tribe-editor__placeholder"
14
+ >
15
+ Custom Text
16
+ </div>
17
+ `;
common/src/modules/elements/placeholder/__tests__/element.test.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+ import Placeholder from '../element';
3
+
4
+ describe( '<Placeholder> component', () => {
5
+ test( 'Default behavior', () => {
6
+ const component = renderer.create(
7
+ <Placeholder>Custom Text</Placeholder>
8
+ );
9
+ expect( component.toJSON() ).toMatchSnapshot();
10
+ } );
11
+
12
+ test( 'Custom Class name attached', () => {
13
+ const component = renderer.create(
14
+ <Placeholder className='custom-class-name'>Custom Text</Placeholder>
15
+ );
16
+ expect( component.toJSON() ).toMatchSnapshot();
17
+ } );
18
+ } );
common/src/modules/elements/placeholder/element.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import './style.pcss';
12
+
13
+ const Placeholder = ( { children, className } ) => (
14
+ <div className={ classNames( 'tribe-editor__placeholder', className ) }>
15
+ { children }
16
+ </div>
17
+ );
18
+
19
+ Placeholder.propTypes = {
20
+ children: PropTypes.node.isRequired,
21
+ };
22
+
23
+ export default Placeholder;
common/src/modules/elements/placeholder/style.pcss ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__placeholder {
2
+ border: 2px dashed #E1E3E6;
3
+ padding: 12px 15px 14px;
4
+ text-align: center;
5
+ font-family: 'Helvetica', 'Arial', 'sans-serif';
6
+ font-size: 1rem;
7
+ line-height: 1.5;
8
+ font-weight: bold;
9
+ color: #8D949B;
10
+ min-width: 260px;
11
+ display: inline-block;
12
+ }
common/src/modules/elements/radio-input/element.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Input from '@moderntribe/common/elements/input/element';
12
+
13
+ const RadioInput = ( { checked, className, onChange, ...rest } ) => (
14
+ <Input
15
+ checked={ checked }
16
+ className={ classNames( 'tribe-editor__input--radio', className ) }
17
+ onChange={ onChange }
18
+ type="radio"
19
+ { ...rest }
20
+ />
21
+ );
22
+
23
+ RadioInput.propTypes = {
24
+ checked: PropTypes.bool,
25
+ className: PropTypes.string,
26
+ onChange: PropTypes.func,
27
+ };
28
+
29
+ export default RadioInput;
common/src/modules/elements/radio/element.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import { noop } from 'lodash';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { RadioInput } from '@moderntribe/common/elements';
13
+
14
+ const Radio = ( { checked, className, disabled, id, label, onChange, name, value } ) => (
15
+ <div className={ classNames( 'tribe-editor__radio', className ) }>
16
+ <RadioInput
17
+ checked={ checked }
18
+ className="tribe-editor__radio__input"
19
+ disabled={ disabled }
20
+ id={ id }
21
+ name={ name }
22
+ onChange={ onChange }
23
+ value={ value }
24
+ />
25
+ <label
26
+ className="tribe-editor__radio_label"
27
+ htmlFor={ id }
28
+ >
29
+ { label }
30
+ </label>
31
+ </div>
32
+ );
33
+
34
+ Radio.defaultProps = {
35
+ checked: false,
36
+ onChange: noop,
37
+ };
38
+
39
+ Radio.propTypes = {
40
+ checked: PropTypes.bool.isRequired,
41
+ className: PropTypes.string,
42
+ disabled: PropTypes.bool,
43
+ id: PropTypes.string,
44
+ label: PropTypes.string,
45
+ name: PropTypes.string,
46
+ onChange: PropTypes.func,
47
+ value: PropTypes.string,
48
+ };
49
+
50
+ export default Radio;
common/src/modules/elements/select/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Select element Should render the component 1`] = `
4
+ <div
5
+ className="css-10nd86i tribe-editor__select"
6
+ onKeyDown={[Function]}
7
+ >
8
+ <div
9
+ className="css-vj8t7z tribe-editor__select__control"
10
+ onMouseDown={[Function]}
11
+ onTouchEnd={[Function]}
12
+ >
13
+ <div
14
+ className="css-1hwfws3 tribe-editor__select__value-container"
15
+ >
16
+ <div
17
+ className="css-1492t68 tribe-editor__select__placeholder"
18
+ >
19
+ Select...
20
+ </div>
21
+ <div
22
+ className="css-1g6gooi"
23
+ >
24
+ <div
25
+ className="tribe-editor__select__input"
26
+ style={
27
+ Object {
28
+ "display": "inline-block",
29
+ }
30
+ }
31
+ >
32
+ <input
33
+ aria-autocomplete="list"
34
+ autoCapitalize="none"
35
+ autoComplete="off"
36
+ autoCorrect="off"
37
+ disabled={false}
38
+ id="react-select-2-input"
39
+ onBlur={[Function]}
40
+ onChange={[Function]}
41
+ onFocus={[Function]}
42
+ spellCheck="false"
43
+ style={
44
+ Object {
45
+ "background": 0,
46
+ "border": 0,
47
+ "boxSizing": "content-box",
48
+ "color": "inherit",
49
+ "fontSize": "inherit",
50
+ "opacity": 1,
51
+ "outline": 0,
52
+ "padding": 0,
53
+ "width": "1px",
54
+ }
55
+ }
56
+ tabIndex="0"
57
+ type="text"
58
+ value=""
59
+ />
60
+ <div
61
+ style={
62
+ Object {
63
+ "height": 0,
64
+ "left": 0,
65
+ "overflow": "scroll",
66
+ "position": "absolute",
67
+ "top": 0,
68
+ "visibility": "hidden",
69
+ "whiteSpace": "pre",
70
+ }
71
+ }
72
+ >
73
+
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ <div
79
+ className="css-1wy0on6 tribe-editor__select__indicators"
80
+ >
81
+ <div
82
+ aria-hidden="true"
83
+ className="css-1ep9fjw tribe-editor__select__indicator tribe-editor__select__dropdown-indicator"
84
+ onMouseDown={[Function]}
85
+ onTouchEnd={[Function]}
86
+ >
87
+ <span
88
+ className="tribe-editor__select__dropdown-indicator"
89
+ >
90
+ arrow-down
91
+ </span>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ `;
97
+
98
+ exports[`Select element Should render the component with class 1`] = `
99
+ <div
100
+ className="css-10nd86i tribe-editor__select test-class"
101
+ onKeyDown={[Function]}
102
+ >
103
+ <div
104
+ className="css-vj8t7z tribe-editor__select__control"
105
+ onMouseDown={[Function]}
106
+ onTouchEnd={[Function]}
107
+ >
108
+ <div
109
+ className="css-1hwfws3 tribe-editor__select__value-container"
110
+ >
111
+ <div
112
+ className="css-1492t68 tribe-editor__select__placeholder"
113
+ >
114
+ Select...
115
+ </div>
116
+ <div
117
+ className="css-1g6gooi"
118
+ >
119
+ <div
120
+ className="tribe-editor__select__input"
121
+ style={
122
+ Object {
123
+ "display": "inline-block",
124
+ }
125
+ }
126
+ >
127
+ <input
128
+ aria-autocomplete="list"
129
+ autoCapitalize="none"
130
+ autoComplete="off"
131
+ autoCorrect="off"
132
+ disabled={false}
133
+ id="react-select-3-input"
134
+ onBlur={[Function]}
135
+ onChange={[Function]}
136
+ onFocus={[Function]}
137
+ spellCheck="false"
138
+ style={
139
+ Object {
140
+ "background": 0,
141
+ "border": 0,
142
+ "boxSizing": "content-box",
143
+ "color": "inherit",
144
+ "fontSize": "inherit",
145
+ "opacity": 1,
146
+ "outline": 0,
147
+ "padding": 0,
148
+ "width": "1px",
149
+ }
150
+ }
151
+ tabIndex="0"
152
+ type="text"
153
+ value=""
154
+ />
155
+ <div
156
+ style={
157
+ Object {
158
+ "height": 0,
159
+ "left": 0,
160
+ "overflow": "scroll",
161
+ "position": "absolute",
162
+ "top": 0,
163
+ "visibility": "hidden",
164
+ "whiteSpace": "pre",
165
+ }
166
+ }
167
+ >
168
+
169
+ </div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ <div
174
+ className="css-1wy0on6 tribe-editor__select__indicators"
175
+ >
176
+ <div
177
+ aria-hidden="true"
178
+ className="css-1ep9fjw tribe-editor__select__indicator tribe-editor__select__dropdown-indicator"
179
+ onMouseDown={[Function]}
180
+ onTouchEnd={[Function]}
181
+ >
182
+ <span
183
+ className="tribe-editor__select__dropdown-indicator"
184
+ >
185
+ arrow-down
186
+ </span>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ `;
192
+
193
+ exports[`Select element Should render the component with extra props 1`] = `
194
+ <div
195
+ className="css-10nd86i tribe-editor__select"
196
+ onKeyDown={[Function]}
197
+ >
198
+ <div
199
+ className="css-vj8t7z tribe-editor__select__control"
200
+ onMouseDown={[Function]}
201
+ onTouchEnd={[Function]}
202
+ >
203
+ <div
204
+ className="css-1hwfws3 tribe-editor__select__value-container"
205
+ >
206
+ <div
207
+ className="css-1492t68 tribe-editor__select__placeholder"
208
+ >
209
+ Select...
210
+ </div>
211
+ <input
212
+ className="css-14uuagi"
213
+ id="react-select-4-input"
214
+ onBlur={[Function]}
215
+ onChange={[Function]}
216
+ onFocus={[Function]}
217
+ readOnly={true}
218
+ tabIndex="0"
219
+ value=""
220
+ />
221
+ </div>
222
+ <div
223
+ className="css-1wy0on6 tribe-editor__select__indicators"
224
+ >
225
+ <div
226
+ aria-hidden="true"
227
+ className="css-1ep9fjw tribe-editor__select__indicator tribe-editor__select__dropdown-indicator"
228
+ onMouseDown={[Function]}
229
+ onTouchEnd={[Function]}
230
+ >
231
+ <span
232
+ className="tribe-editor__select__dropdown-indicator"
233
+ >
234
+ arrow-down
235
+ </span>
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ `;
common/src/modules/elements/select/__tests__/element.test.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import Select from '../element.js';
10
+
11
+ const options = [
12
+ { label: 'Test 1', value: 'test-1' },
13
+ { label: 'Test 2', value: 'test-2' },
14
+ ];
15
+
16
+ describe( 'Select element', () => {
17
+ it( 'Should render the component', () => {
18
+ const component = renderer.create( <Select options={ options } /> );
19
+ expect( component.toJSON() ).toMatchSnapshot();
20
+ } );
21
+
22
+ it( 'Should render the component with class', () => {
23
+ const component = renderer.create( <Select options={ options } className="test-class" /> );
24
+ expect( component.toJSON() ).toMatchSnapshot();
25
+ } );
26
+
27
+ it( 'Should render the component with extra props', () => {
28
+ const component = renderer.create( <Select options={ options } isSearchable={ false } /> );
29
+ expect( component.toJSON() ).toMatchSnapshot();
30
+ } );
31
+ } );
common/src/modules/elements/select/element.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+ import ReactSelect, { components } from 'react-select';
8
+ import { Dashicon } from '@wordpress/components';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import './style.pcss';
14
+
15
+ const DropdownIndicator = ( props ) => (
16
+ components.DropdownIndicator && (
17
+ <components.DropdownIndicator { ...props }>
18
+ <Dashicon
19
+ className="tribe-editor__select__dropdown-indicator"
20
+ icon={ 'arrow-down' }
21
+ />
22
+ </components.DropdownIndicator>
23
+ )
24
+ );
25
+
26
+ const IndicatorSeparator = () => null;
27
+
28
+ const Select = ( { className, ...rest } ) => (
29
+ <ReactSelect
30
+ className={ classNames( 'tribe-editor__select', className ) }
31
+ classNamePrefix="tribe-editor__select"
32
+ components={ { DropdownIndicator, IndicatorSeparator } }
33
+ { ...rest }
34
+ />
35
+ );
36
+
37
+ Select.propTypes = {
38
+ className: PropTypes.string,
39
+ };
40
+
41
+ export default Select;
common/src/modules/elements/select/style.pcss ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__select {
2
+
3
+ .tribe-editor__select__control {
4
+ height: 46px;
5
+ border: 1px solid #E1E3E6;
6
+ border-radius: 3px;
7
+ background-color: #FFFFFF;
8
+
9
+ &:hover {
10
+ border: 1px solid #E1E3E6;
11
+ }
12
+
13
+ &--is-focused {
14
+ box-shadow: none;
15
+ }
16
+ }
17
+
18
+ .tribe-editor__select__value-container {
19
+ padding: 2px 10px 2px 15px;
20
+ }
21
+
22
+ .tribe-editor__select__single-value {
23
+ margin: 0;
24
+ max-width: calc(100% - 15px);
25
+ font-size: 16px;
26
+ line-height: 1.5;
27
+ }
28
+
29
+ .tribe-editor__select__input {
30
+ font-size: 16px;
31
+
32
+ & > input {
33
+ margin: 0;
34
+ line-height: 1.5;
35
+ }
36
+ }
37
+
38
+ svg.tribe-editor__select__dropdown-indicator {
39
+ fill: #555D66;
40
+ }
41
+
42
+ .tribe-editor__select__menu {
43
+ margin: 0;
44
+ border: 1px solid #E1E3E6;
45
+ border-top: none;
46
+ border-radius: 0;
47
+ border-bottom-left-radius: 3px;
48
+ border-bottom-right-radius: 3px;
49
+ box-shadow: none;
50
+ transform: translateY(-7px);
51
+ }
52
+
53
+ .tribe-editor__select__menu-list {
54
+ padding: 0;
55
+ }
56
+
57
+ .tribe-editor__select__option {
58
+ font-size: 16px;
59
+ line-height: 1.5;
60
+ padding: 3px 15px;
61
+
62
+ &--is-focused {
63
+ background-color: #E7F5FA;
64
+ }
65
+
66
+ &--is-selected {
67
+ background-color: #11A0D2;
68
+ }
69
+ }
70
+
71
+ &--is-disabled {
72
+
73
+ svg.tribe-editor__select__dropdown-indicator {
74
+ fill: #AEB4BB;
75
+ }
76
+ }
77
+ }
common/src/modules/elements/style.pcss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ .post-type-tribe_events .editor-styles-wrapper {
2
+ max-width: none!important;
3
+ }
common/src/modules/elements/textarea/element.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+
12
+ const Textarea = ( { className, ...rest } ) => (
13
+ <textarea className={ classNames( 'tribe-editor__textarea', className ) } { ...rest } />
14
+ );
15
+
16
+ Textarea.propTypes = {
17
+ className: PropTypes.string,
18
+ };
19
+
20
+ export default Textarea;
common/src/modules/elements/time-picker/element.js ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import moment from 'moment';
7
+ import { noop } from 'lodash';
8
+ import classNames from 'classnames';
9
+ import { ScrollTo, ScrollArea } from 'react-scroll-to';
10
+
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+ import {
15
+ Dropdown,
16
+ Dashicon,
17
+ } from '@wordpress/components';
18
+ import { __ } from '@wordpress/i18n';
19
+
20
+ /**
21
+ * Internal dependencies
22
+ */
23
+ import { PreventBlockClose } from '@moderntribe/common/components';
24
+ import {
25
+ moment as momentUtil,
26
+ time as timeUtil,
27
+ TribePropTypes,
28
+ } from '@moderntribe/common/utils';
29
+ import './style.pcss';
30
+
31
+ const TimePicker = ( {
32
+ current,
33
+ min,
34
+ max,
35
+ start,
36
+ end,
37
+ step,
38
+ timeFormat,
39
+ allDay,
40
+ onChange,
41
+ onClick,
42
+ showAllDay,
43
+ disabled,
44
+ } ) => {
45
+
46
+ const renderLabel = ( onToggle ) => {
47
+ if ( allDay ) {
48
+ return (
49
+ <button
50
+ className="tribe-editor__timepicker__all-day-btn"
51
+ onClick={ onToggle }
52
+ disabled={ disabled }
53
+ >
54
+ { __( 'All Day', 'events-gutenberg' ) }
55
+ </button>
56
+ );
57
+ }
58
+
59
+ const additionalProps = {};
60
+ if ( min ) {
61
+ additionalProps.min = min;
62
+ }
63
+
64
+ if ( max ) {
65
+ additionalProps.max = max;
66
+ }
67
+
68
+ return (
69
+ <input
70
+ className="tribe-editor__btn-input"
71
+ type="time"
72
+ value={ current }
73
+ onChange={ onChange }
74
+ disabled={ disabled }
75
+ { ...additionalProps }
76
+ />
77
+ );
78
+ };
79
+
80
+ const toggleDropdown = ( { onToggle, isOpen } ) => (
81
+ <div className="tribe-editor__timepicker-label-container">
82
+ { renderLabel( onToggle ) }
83
+ <button
84
+ type="button"
85
+ aria-expanded={ isOpen }
86
+ onClick={ onToggle }
87
+ disabled={ disabled }
88
+ >
89
+ <Dashicon className="btn--icon" icon={ isOpen ? 'arrow-up' : 'arrow-down' } />
90
+ </button>
91
+ </div>
92
+ );
93
+
94
+ const getItems = () => {
95
+ const items = [];
96
+
97
+ const startSeconds = timeUtil.toSeconds( start, timeUtil.TIME_FORMAT_HH_MM );
98
+ const endSeconds = timeUtil.toSeconds( end, timeUtil.TIME_FORMAT_HH_MM );
99
+
100
+ for ( let time = startSeconds; time <= endSeconds; time += step ) {
101
+ items.push( {
102
+ value: time,
103
+ text: formatLabel( time ),
104
+ isCurrent: current
105
+ ? time === timeUtil.toSeconds( current, timeUtil.TIME_FORMAT_HH_MM )
106
+ : false,
107
+ } );
108
+ }
109
+
110
+ return items;
111
+ };
112
+
113
+ const formatLabel = ( seconds ) => {
114
+ return momentUtil.setTimeInSeconds( moment(), seconds ).format( momentUtil.toFormat( timeFormat ) );
115
+ };
116
+
117
+ const renderItem = ( item, onClose ) => {
118
+ const itemClasses = {
119
+ 'tribe-editor__timepicker__item': true,
120
+ 'tribe-editor__timepicker__item--current': item.isCurrent && ! allDay,
121
+ };
122
+
123
+ return (
124
+ <button
125
+ key={ `time-${ item.value }` }
126
+ role="menuitem"
127
+ className={ classNames( itemClasses ) }
128
+ value={ item.value }
129
+ onClick={ () => onClick( item.value, onClose ) }
130
+ >
131
+ { item.text }
132
+ </button>
133
+ );
134
+ };
135
+
136
+ const renderDropdownContent = ( { onClose } ) => (
137
+ <ScrollTo>
138
+ { () => (
139
+ <PreventBlockClose>
140
+ <ScrollArea
141
+ id="tribe-element-timepicker-items"
142
+ key="tribe-element-timepicker-items"
143
+ role="menu"
144
+ className={ classNames( 'tribe-editor__timepicker__items' ) }
145
+ >
146
+ { showAllDay && renderItem(
147
+ { text: __( 'All Day', 'events-gutenberg' ), value: 'all-day' },
148
+ onClose,
149
+ ) }
150
+ { getItems().map( ( item ) => renderItem( item, onClose ) ) }
151
+ </ScrollArea>
152
+ </PreventBlockClose>
153
+ ) }
154
+ </ScrollTo>
155
+ );
156
+
157
+ return (
158
+ <div
159
+ key="tribe-element-timepicker"
160
+ className="tribe-editor__timepicker"
161
+ >
162
+ <Dropdown
163
+ className="tribe-element-timepicker-label"
164
+ position="bottom center"
165
+ contentClassName="tribe-editor__timepicker__dialog"
166
+ renderToggle={ toggleDropdown }
167
+ renderContent={ renderDropdownContent }
168
+ />
169
+ </div>
170
+ );
171
+ };
172
+
173
+ TimePicker.defaultProps = {
174
+ step: timeUtil.HALF_HOUR_IN_SECONDS,
175
+ timeFormat: 'H:i',
176
+ allDay: false,
177
+ onChange: noop,
178
+ onClick: noop,
179
+ };
180
+
181
+ TimePicker.propTypes = {
182
+ /**
183
+ * TribePropTypes.timeFormat check for string formatted as a time
184
+ * using 24h clock in hh:mm format
185
+ * e.g. 00:24, 03:57, 21:12
186
+ */
187
+ current: TribePropTypes.timeFormat.isRequired,
188
+ min: TribePropTypes.timeFormat,
189
+ max: TribePropTypes.timeFormat,
190
+ start: TribePropTypes.timeFormat.isRequired,
191
+ end: TribePropTypes.timeFormat.isRequired,
192
+ step: PropTypes.number,
193
+ timeFormat: PropTypes.string,
194
+ allDay: PropTypes.bool,
195
+ onChange: PropTypes.func.isRequired,
196
+ onClick: PropTypes.func.isRequired,
197
+ showAllDay: PropTypes.bool,
198
+ disabled: PropTypes.bool,
199
+ };
200
+
201
+ export default TimePicker;
common/src/modules/elements/time-picker/style.pcss ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-editor__timepicker {
2
+ display: inline-block;
3
+ }
4
+
5
+ .tribe-editor__timepicker-label-container {
6
+ background-color: #FFF;
7
+ border: 1px solid #e1e3e6;
8
+ padding-left: 10px;
9
+ border-radius: 2px;
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+
14
+ input[type="time"] {
15
+ font-family: "Noto Serif", serif;
16
+ font-size: 14px;
17
+ padding: 6px 0;
18
+ border: none;
19
+
20
+ &::-webkit-clear-button {
21
+ -webkit-appearance: none;
22
+ display: none;
23
+ }
24
+
25
+ &:focus {
26
+ box-shadow: none;
27
+ }
28
+ }
29
+
30
+ button {
31
+ background-color: #FEFFFE;
32
+ color: #545D66;
33
+ font-family: Helvetica, sans-serif;
34
+ font-weight: normal;
35
+ line-height: 1.5;
36
+ padding: 11px 10px 10px;
37
+ text-decoration: none;
38
+ border: none;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+
43
+ &:disabled > svg.dashicon {
44
+ fill: #AEB4BB;
45
+ }
46
+ }
47
+
48
+ .tribe-editor__timepicker__all-day-btn {
49
+ padding: 6px 0;
50
+ }
51
+ }
52
+
53
+ .tribe-editor__timepicker__dialog {
54
+ &.components-popover {
55
+ .components-popover__content {
56
+ min-width: 110px;
57
+ }
58
+ }
59
+
60
+ .tribe-editor__timepicker__items {
61
+ height: 250px;
62
+ overflow: auto;
63
+
64
+ .components-placeholder {
65
+ height: inherit;
66
+ }
67
+ }
68
+
69
+ .tribe-editor__timepicker__item {
70
+ display: block;
71
+ width: 100%;
72
+ color: #555d66;
73
+ padding: 5px 12px;
74
+ cursor: pointer;
75
+ border: 0;
76
+ border-bottom: 1px solid #e2e4e7;
77
+ line-height: 20px;
78
+ background: transparent;
79
+ text-align: left;
80
+
81
+ &--current {
82
+ color: #ffffff;
83
+ background-color: #009fd4;
84
+
85
+ &:not(:disabled):hover {
86
+ color: #ffffff;
87
+ background-color: #009fd4;
88
+ }
89
+ }
90
+
91
+ &:not(:disabled) {
92
+ &:hover {
93
+ background-color: #e7f5fa;
94
+ }
95
+
96
+ &:focus,
97
+ &:active,
98
+ &.is-active {
99
+ position: relative;
100
+ }
101
+ }
102
+ }
103
+ }
common/src/modules/elements/tooltip/__tests__/__snapshots__/element.test.js.snap ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Tooltip Element renders a tooltip 1`] = `
4
+ <div>
5
+ <span>
6
+ here is the tooltip text
7
+ </span>
8
+ <span>
9
+ bottom left
10
+ </span>
11
+ <span>
12
+ <button
13
+ aria-label="here is the tooltip text"
14
+ className="tribe-editor__button tribe-editor__tooltip-label label-class-name"
15
+ onClick={[Function]}
16
+ type="button"
17
+ >
18
+ some label
19
+ </button>
20
+ </span>
21
+ </div>
22
+ `;
common/src/modules/elements/tooltip/__tests__/element.test.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import Tooltip from '@moderntribe/common/elements/tooltip/element';
11
+
12
+ jest.mock( '@wordpress/components', () => ( {
13
+ Tooltip: ({ text, position, children }) => (
14
+ <div>
15
+ <span>{ text }</span>
16
+ <span>{ position }</span>
17
+ <span>{ children }</span>
18
+ </div>
19
+ ),
20
+ } ) );
21
+
22
+ describe( 'Tooltip Element', () => {
23
+ it( 'renders a tooltip', () => {
24
+ const props = {
25
+ label: 'some label',
26
+ labelClassName: 'label-class-name',
27
+ position: 'bottom left',
28
+ text: 'here is the tooltip text',
29
+ };
30
+ const component = renderer.create( <Tooltip { ...props } />)
31
+ expect( component.toJSON() ).toMatchSnapshot()
32
+ } );
33
+ } );
common/src/modules/elements/tooltip/element.js ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { PureComponent } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * WordPress dependencies
10
+ */
11
+ import { Tooltip as WpTooltip } from '@wordpress/components';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { Button } from '@moderntribe/common/elements';
17
+
18
+ class Tooltip extends PureComponent {
19
+ static defaultProps = {
20
+ position: 'top right',
21
+ text: '',
22
+ };
23
+
24
+ static propTypes = {
25
+ disabled: PropTypes.bool,
26
+ label: PropTypes.node,
27
+ labelClassName: PropTypes.string,
28
+ position: PropTypes.oneOf( [
29
+ 'top left',
30
+ 'top center',
31
+ 'top right',
32
+ 'bottom left',
33
+ 'bottom center',
34
+ 'bottom right',
35
+ ] ),
36
+ text: PropTypes.string,
37
+ };
38
+
39
+ render() {
40
+ const { disabled, label, labelClassName, position, text } = this.props;
41
+
42
+ return (
43
+ <WpTooltip text={ text } position={ position }>
44
+ <Button
45
+ aria-label={ text }
46
+ className={ classNames( 'tribe-editor__tooltip-label', labelClassName ) }
47
+ disabled={ disabled }
48
+ >
49
+ { label }
50
+ </Button>
51
+ </WpTooltip>
52
+ );
53
+ }
54
+ }
55
+
56
+ export default Tooltip;
common/src/modules/elements/url-input/element.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External Dependencies
3
+ */
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import classNames from 'classnames';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Input from '@moderntribe/common/elements/input/element';
12
+
13
+ const UrlInput = ( { checked, className, onChange, ...rest } ) => (
14
+ <Input
15
+ type="url"
16
+ className={ classNames( 'tribe-editor__input--url', className ) }
17
+ onChange={ onChange }
18
+ { ...rest }
19
+ />
20
+ );
21
+
22
+ UrlInput.propTypes = {
23
+ className: PropTypes.string,
24
+ onChange: PropTypes.func,
25
+ };
26
+
27
+ export default UrlInput;
common/src/modules/hoc/__tests__/__snapshots__/with-details.test.js.snap ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`HOC - With Details Should match the dispatched actions 1`] = `
4
+ Array [
5
+ Object {
6
+ "payload": Object {
7
+ "id": "event",
8
+ "postType": undefined,
9
+ },
10
+ "type": "@@MT/EVENTS/SET_DETAILS_POST_TYPE",
11
+ },
12
+ Object {
13
+ "meta": Object {
14
+ "actions": Object {
15
+ "error": [Function],
16
+ "start": [Function],
17
+ "success": [Function],
18
+ },
19
+ "path": "tribe_events/event",
20
+ },
21
+ "type": "@@MT/COMMON/WP_REQUEST",
22
+ },
23
+ ]
24
+ `;
25
+
26
+ exports[`HOC - With Details Should render a component 1`] = `
27
+ <div>
28
+ With Details!
29
+ </div>
30
+ `;
common/src/modules/hoc/__tests__/__snapshots__/with-form.test.js.snap ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`HOC - With Form Should register the postType by dispatching the actions 1`] = `
4
+ Array [
5
+ Object {
6
+ "payload": Object {
7
+ "id": "posts",
8
+ "type": "post",
9
+ },
10
+ "type": "@@MT/COMMON/ADD_FORM",
11
+ },
12
+ ]
13
+ `;
14
+
15
+ exports[`HOC - With Form Should render a component 1`] = `
16
+ <div>
17
+ With Form!
18
+ </div>
19
+ `;
common/src/modules/hoc/__tests__/__snapshots__/with-save-data.test.js.snap ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`HOC - With Details Should render a component 1`] = `
4
+ <div
5
+ attributes={
6
+ Object {
7
+ "description": "",
8
+ "organizers": Array [],
9
+ "title": "Modern Tribe",
10
+ }
11
+ }
12
+ description="The Next Generation of Digital Agency"
13
+ isolated={false}
14
+ name="tribe/event"
15
+ onBlockCreated={[Function]}
16
+ onBlockRemoved={[Function]}
17
+ organizers={Array []}
18
+ setAttributes={[MockFunction]}
19
+ setInitialState={
20
+ [MockFunction] {
21
+ "calls": Array [
22
+ Array [
23
+ Object {
24
+ "attributes": Object {
25
+ "description": "",
26
+ "organizers": Array [],
27
+ "title": "Modern Tribe",
28
+ },
29
+ "description": "The Next Generation of Digital Agency",
30
+ "get": [Function],
31
+ "isolated": false,
32
+ "name": "tribe/event",
33
+ "onBlockCreated": [Function],
34
+ "onBlockRemoved": [Function],
35
+ "organizers": Array [],
36
+ "setAttributes": [MockFunction],
37
+ "setInitialState": [MockFunction] {
38
+ "calls": [Circular],
39
+ "results": Array [
40
+ Object {
41
+ "isThrow": false,
42
+ "value": undefined,
43
+ },
44
+ ],
45
+ },
46
+ "title": "Modern Tribe!",
47
+ },
48
+ ],
49
+ ],
50
+ "results": Array [
51
+ Object {
52
+ "isThrow": false,
53
+ "value": undefined,
54
+ },
55
+ ],
56
+ }
57
+ }
58
+ title="Modern Tribe!"
59
+ >
60
+ With Save Data!
61
+ </div>
62
+ `;
common/src/modules/hoc/__tests__/__snapshots__/with-store.test.js.snap ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`HOC - With Store Should add the store property 1`] = `
4
+ <div
5
+ store={
6
+ Object {
7
+ "dispatch": [Function],
8
+ "getState": [Function],
9
+ "injectReducers": [Function],
10
+ "injectedReducers": Object {},
11
+ "replaceReducer": [Function],
12
+ "run": [Function],
13
+ "subscribe": [Function],
14
+ Symbol(observable): [Function],
15
+ }
16
+ }
17
+ />
18
+ `;
common/src/modules/hoc/__tests__/with-details.test.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import renderer from 'react-test-renderer';
5
+ import React from 'react';
6
+ import configureStore from 'redux-mock-store';
7
+ import thunk from 'redux-thunk';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { withDetails } from '@moderntribe/events/hoc';
13
+
14
+ const initialState = {
15
+ events: {
16
+ details: {},
17
+ },
18
+ forms: {
19
+ byID: {},
20
+ volatile: [],
21
+ },
22
+ };
23
+ // here it is possible to pass in any middleware if needed into //configureStore
24
+ const mockStore = configureStore( [ thunk ] );
25
+ const store = mockStore( initialState );
26
+
27
+ const Block = () => <div>With Details!</div>;
28
+ let Wrapper;
29
+ let component;
30
+ let instance;
31
+
32
+ describe( 'HOC - With Details', () => {
33
+ beforeEach( () => {
34
+ Wrapper = withDetails()( Block );
35
+ component = renderer.create( <Wrapper store={ store } clientId="event" /> );
36
+ instance = component.root;
37
+ } );
38
+
39
+ afterEach( () => {
40
+ mockStore( initialState );
41
+ store.clearActions();
42
+ } );
43
+
44
+ it( 'Should render a component', () => {
45
+ expect( component.toJSON() ).toMatchSnapshot();
46
+ } );
47
+
48
+ it( 'Should render the inner component', () => {
49
+ expect( instance ).not.toBe( null );
50
+ expect( () => instance.findByType( Block ) ).not.toThrowError();
51
+ } );
52
+
53
+ it( 'Should attach the details properties', () => {
54
+ const expected = {
55
+ details: {},
56
+ isLoading: false,
57
+ };
58
+ expect( instance.findByType( Block ).props ).toMatchObject( expected );
59
+ } );
60
+
61
+ it( 'Should match the dispatched actions', () => {
62
+ expect( store.getActions() ).toMatchSnapshot();
63
+ } );
64
+ } );
65
+
common/src/modules/hoc/__tests__/with-form.test.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import renderer from 'react-test-renderer';
5
+ import React from 'react';
6
+ import configureStore from 'redux-mock-store';
7
+ import thunk from 'redux-thunk';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { withForm } from '@moderntribe/common/hoc';
13
+
14
+ const initialState = {
15
+ events: {
16
+ },
17
+ forms: {
18
+ byId: {},
19
+ },
20
+ };
21
+ // here it is possible to pass in any middleware if needed into //configureStore
22
+ const mockStore = configureStore( [ thunk ] );
23
+ const store = mockStore( initialState );
24
+
25
+ const Block = () => <div>With Form!</div>;
26
+ let setFormID;
27
+ let Wrapper;
28
+ let component;
29
+ let instance;
30
+
31
+ describe( 'HOC - With Form', () => {
32
+ beforeEach( () => {
33
+ setFormID = jest.fn( () => 'posts' );
34
+ Wrapper = withForm( setFormID )( Block );
35
+ component = renderer.create( <Wrapper store={ store } postType="post"/> );
36
+ instance = component.root;
37
+ } );
38
+
39
+ afterEach( () => {
40
+ mockStore( initialState );
41
+ store.clearActions();
42
+ setFormID.mockClear();
43
+ } );
44
+
45
+ it( 'Should render a component', () => {
46
+ expect( component.toJSON() ).toMatchSnapshot();
47
+ } );
48
+
49
+ it( 'Should render the inner component', () => {
50
+ expect( instance ).not.toBe( null );
51
+ expect( () => instance.findByType( Block ) ).not.toThrowError();
52
+ } );
53
+
54
+ it( 'Should attach the form properties', () => {
55
+ const expected = {
56
+ edit: false,
57
+ create: false,
58
+ fields: {},
59
+ submit: false,
60
+ };
61
+ expect( instance.findByType( Block ).props ).toMatchObject( expected );
62
+ } );
63
+
64
+ it( 'Should have properties as functions', () => {
65
+ const props = instance.findByType( Block ).props;
66
+ const expectedProps = [
67
+ 'maybeRemoveEntry',
68
+ 'setSubmit',
69
+ 'sendForm',
70
+ 'editEntry',
71
+ 'createDraft',
72
+ ];
73
+
74
+ expectedProps.forEach( ( property ) => {
75
+ expect( props[ property ] ).not.toBeUndefined();
76
+ expect( typeof props[ property ] ).toBe( 'function' );
77
+ } );
78
+ } );
79
+
80
+ it( 'Should register the postType by dispatching the actions', () => {
81
+ expect( store.getActions() ).toMatchSnapshot();
82
+ } );
83
+
84
+ it( 'Should register the ID of the form', () => {
85
+ expect( setFormID ).toHaveBeenCalled();
86
+ expect( setFormID ).toHaveBeenCalledTimes( 3 );
87
+ } );
88
+ } );
89
+
common/src/modules/hoc/__tests__/with-save-data.test.js ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import renderer from 'react-test-renderer';
5
+ import React from 'react';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { withSaveData } from '@moderntribe/common/hoc';
11
+
12
+ const Block = ( props ) => <div { ...props }>With Save Data!</div>;
13
+ const props = {
14
+ name: 'tribe/event',
15
+ setInitialState: jest.fn(),
16
+ setAttributes: jest.fn(),
17
+ title: 'Modern Tribe!',
18
+ description: 'The Next Generation of Digital Agency',
19
+ organizers: [],
20
+ attributes: {
21
+ title: 'Modern Tribe',
22
+ description: '',
23
+ organizers: [],
24
+ },
25
+ };
26
+
27
+ describe( 'HOC - With Details', () => {
28
+ let Wrapper;
29
+ let component;
30
+ let instance;
31
+
32
+ beforeEach( () => {
33
+ Wrapper = withSaveData()( Block );
34
+ component = renderer.create( <Wrapper { ...props } /> );
35
+ instance = component.root;
36
+ } );
37
+
38
+ afterEach( () => {
39
+ props.setInitialState.mockClear();
40
+ props.setAttributes.mockClear();
41
+ component.getInstance().unregisterBlock();
42
+ } );
43
+
44
+ it( 'Should render a component', () => {
45
+ expect( component.toJSON() ).toMatchSnapshot();
46
+ } );
47
+
48
+ it( 'Should render the inner component', () => {
49
+ expect( instance ).not.toBe( null );
50
+ expect( () => instance.findByType( Block ) ).not.toThrowError();
51
+ } );
52
+
53
+ it( 'Should set the initial state', () => {
54
+ expect( props.setInitialState ).toHaveBeenCalled();
55
+ expect( props.setInitialState ).toHaveBeenCalledTimes( 1 );
56
+ } );
57
+
58
+ it( 'Should generate the attributes', () => {
59
+ const HOC = component.getInstance();
60
+ expect( HOC.attrs ).toEqual( props.attributes );
61
+ } );
62
+
63
+ it( 'Should generate the keys', () => {
64
+ const HOC = component.getInstance();
65
+ expect( HOC.keys ).toEqual( Object.keys( props.attributes ) );
66
+ } );
67
+
68
+ it( 'Simulate componentDidUpdate call', () => {
69
+ const wrapper = shallow( <Wrapper { ...props } /> );
70
+ const wrapperInstance = wrapper.instance();
71
+ expect( wrapperInstance.calculateDiff() ).toEqual( {
72
+ description: 'The Next Generation of Digital Agency',
73
+ title: 'Modern Tribe!',
74
+ } );
75
+ wrapper.setProps( {
76
+ attributes: {
77
+ title: 'Modern Tribe!',
78
+ description: 'The Next Generation of Digital Agency',
79
+ organizers: [],
80
+ }
81
+ } );
82
+ expect( wrapperInstance.calculateDiff() ).toEqual( {} );
83
+ wrapper.setProps( {
84
+ organizers: [ 3 ],
85
+ attributes: {
86
+ title: 'Modern Tribe!',
87
+ description: 'The Next Generation of Digital Agency',
88
+ organizers: [ 3 ],
89
+ },
90
+ } );
91
+ expect( wrapperInstance.calculateDiff() ).toEqual( {} );
92
+ wrapper.setProps( {
93
+ organizers: [ 2, 3 ],
94
+ attributes: {
95
+ title: 'Modern Tribe!',
96
+ description: 'The Next Generation of Digital Agency',
97
+ organizers: [ 3, 2 ],
98
+ },
99
+ } );
100
+ expect( wrapperInstance.calculateDiff() ).toEqual( { organizers: [ 2, 3 ] } );
101
+ wrapperInstance.unregisterBlock();
102
+ } );
103
+
104
+ it( 'Should calculate the diff', () => {
105
+ const HOC = component.getInstance();
106
+ const expected = {
107
+ title: props.title,
108
+ description: props.description,
109
+ };
110
+ expect( HOC.calculateDiff() ).toEqual( expected );
111
+ } );
112
+
113
+ it( 'Should count a single block', () => {
114
+ const HOC = component.getInstance();
115
+ expect( HOC.blockCount() ).toBe( 1 );
116
+ } );
117
+ } );
118
+
119
+ describe( 'HOC - With Details on multiple instances', () => {
120
+ afterEach( () => {
121
+ props.setInitialState.mockClear();
122
+ props.setAttributes.mockClear();
123
+ } );
124
+
125
+ it( 'Should register the initial state just once', () => {
126
+ const WrapperComponent = withSaveData()( Block );
127
+
128
+ renderer.create( <WrapperComponent { ...props } /> );
129
+ renderer.create( <WrapperComponent { ...props } /> );
130
+ renderer.create( <WrapperComponent { ...props } /> );
131
+
132
+ expect( props.setInitialState ).toHaveBeenCalled();
133
+ expect( props.setInitialState ).toHaveBeenCalledTimes( 1 );
134
+ } );
135
+
136
+ it( 'Should register the state multiple times on non isolated instances', () => {
137
+ const WrapperComponent = withSaveData()( Block );
138
+ props.isolated = true;
139
+ renderer.create( <WrapperComponent { ...props } /> );
140
+ renderer.create( <WrapperComponent { ...props } /> );
141
+ renderer.create( <WrapperComponent { ...props } /> );
142
+
143
+ expect( props.setInitialState ).toHaveBeenCalled();
144
+ expect( props.setInitialState ).toHaveBeenCalledTimes( 3 );
145
+ } );
146
+ } );
147
+
148
+ describe( 'HOC - test life cycle callbacks', () => {
149
+ let Wrapper;
150
+ let component;
151
+ let instance;
152
+ let properties = {};
153
+
154
+ beforeAll( () => {
155
+ props.onBlockCreated = jest.fn();
156
+ props.onBlockRemoved = jest.fn();
157
+ });
158
+
159
+ beforeEach( () => {
160
+ Wrapper = withSaveData()( Block );
161
+ component = renderer.create( <Wrapper { ...props } /> );
162
+ instance = component.root;
163
+ properties = instance.props;
164
+ } );
165
+
166
+ afterEach( () => {
167
+ props.setInitialState.mockClear();
168
+ props.setAttributes.mockClear();
169
+ props.onBlockCreated.mockClear();
170
+ props.onBlockRemoved.mockClear();
171
+ } );
172
+
173
+ afterAll( () => {
174
+ delete props.onBlockCreated;
175
+ delete props.onBlockRemoved;
176
+ } );
177
+
178
+ it( 'Should call the onBlockCreated callback on mount', () => {
179
+ expect( props.onBlockCreated ).toHaveBeenCalled();
180
+ expect( props.onBlockCreated ).toHaveBeenCalledWith( properties );
181
+ expect( props.onBlockRemoved ).not.toHaveBeenCalled();
182
+ } );
183
+
184
+ it( 'Should call the onBlockRemoved callback on unmount of the block', () => {
185
+ component.unmount();
186
+ expect( props.onBlockCreated ).toHaveBeenCalled();
187
+ expect( props.onBlockCreated ).toHaveBeenCalledWith( properties );
188
+ expect( props.onBlockRemoved ).toHaveBeenCalled();
189
+ expect( props.onBlockRemoved ).toHaveBeenCalledWith( properties );
190
+ } );
191
+ } );
common/src/modules/hoc/__tests__/with-selected.test.js ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { withSelected } from '@moderntribe/common/hoc';
10
+
11
+ const Block = () => ( <div>With Selected!</div> );
12
+
13
+ describe( 'withSelected', () => {
14
+ let HOC;
15
+ const onFocus = jest.fn();
16
+ const onBlur = jest.fn();
17
+ const props = {
18
+ onBlockFocus: onFocus,
19
+ onBlockBlur: onBlur,
20
+ };
21
+
22
+ beforeEach( () => {
23
+ HOC = withSelected()( Block );
24
+ } );
25
+
26
+ afterEach( () => {
27
+ props.onBlockFocus.mockClear();
28
+ props.onBlockBlur.mockClear();
29
+ } );
30
+
31
+ test( 'onBlur called when is not selected on mount', () => {
32
+ props.isSelected = false;
33
+ const component = mount( <HOC { ...props } /> );
34
+ expect( props.onBlockBlur ).toHaveBeenCalled();
35
+ expect( props.onBlockFocus ).not.toHaveBeenCalled();
36
+ } );
37
+
38
+ test( 'onFocus called when is selected on mount', () => {
39
+ props.isSelected = true;
40
+ const component = mount( <HOC { ...props } /> );
41
+ expect( props.onBlockFocus ).toHaveBeenCalled();
42
+ expect( props.onBlockBlur ).not.toHaveBeenCalled();
43
+ } );
44
+
45
+ test( 'trigger focus when isSelected changes after mounted', () => {
46
+ props.isSelected = false;
47
+ const component = mount( <HOC { ...props } /> );
48
+ expect( props.onBlockBlur ).toHaveBeenCalled();
49
+ expect( props.onBlockFocus ).not.toHaveBeenCalled();
50
+
51
+ props.onBlockBlur.mockClear();
52
+ props.onBlockFocus.mockClear();
53
+
54
+ component.setProps( { isSelected: true } );
55
+
56
+ expect( props.onBlockFocus ).toHaveBeenCalled();
57
+ expect( props.onBlockBlur ).not.toHaveBeenCalled();
58
+ } );
59
+
60
+ test( 'trigger onBlur when isSelected changes after mounted', () => {
61
+ props.isSelected = true;
62
+ const component = mount( <HOC { ...props } /> );
63
+ expect( props.onBlockFocus ).toHaveBeenCalled();
64
+ expect( props.onBlockBlur ).not.toHaveBeenCalled();
65
+
66
+ props.onBlockBlur.mockClear();
67
+ props.onBlockFocus.mockClear();
68
+
69
+ component.setProps( { isSelected: false } );
70
+
71
+ expect( props.onBlockBlur ).toHaveBeenCalled();
72
+ expect( props.onBlockFocus ).not.toHaveBeenCalled();
73
+ } );
74
+
75
+ test( 'blue and focus on the different props changes', () => {
76
+ props.isSelected = false;
77
+ const component = mount( <HOC { ...props } /> );
78
+ expect( props.onBlockBlur ).toHaveBeenCalled();
79
+ expect( props.onBlockFocus ).not.toHaveBeenCalled();
80
+
81
+ props.onBlockBlur.mockClear();
82
+ props.onBlockFocus.mockClear();
83
+
84
+ component.setProps( { isSelected: true } );
85
+
86
+ expect( props.onBlockFocus ).toHaveBeenCalled();
87
+ expect( props.onBlockBlur ).not.toHaveBeenCalled();
88
+
89
+ props.onBlockBlur.mockClear();
90
+ props.onBlockFocus.mockClear();
91
+
92
+ component.setProps( { isSelected: false } );
93
+
94
+ expect( props.onBlockBlur ).toHaveBeenCalled();
95
+ expect( props.onBlockFocus ).not.toHaveBeenCalled();
96
+ } );
97
+ } );
common/src/modules/hoc/__tests__/with-store.test.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import renderer from 'react-test-renderer';
5
+ import React from 'react';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { withStore } from '@moderntribe/common/hoc';
11
+
12
+ jest.mock( '@moderntribe/events/data', () => ( {
13
+ getStore() {
14
+ return {};
15
+ },
16
+ } ) );
17
+
18
+ describe( 'HOC - With Store', () => {
19
+ it( 'Should add the store property', () => {
20
+ const Block = ( props ) => <div { ...props } />;
21
+ const Wrapper = withStore()( Block );
22
+ const component = renderer.create( <Wrapper /> );
23
+ expect( component.toJSON() ).toMatchSnapshot();
24
+
25
+ const instance = component.root;
26
+ expect( instance ).not.toBe( null );
27
+ const props = instance.findByType( Block ).props;
28
+ expect( props ).toHaveProperty( 'store' );
29
+ const { store } = props;
30
+ expect( store ).toHaveProperty( 'dispatch' );
31
+ expect( store ).toHaveProperty( 'getState' );
32
+ } );
33
+ } );
34
+
common/src/modules/hoc/index.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ export { default as withStore } from './with-store';
2
+ export { default as withSaveData } from './with-save-data';
3
+ export { default as withForm } from './with-form';
4
+ export { default as withBlockCloser } from './with-block-closer';
5
+ export { default as withSelected } from './with-selected';
common/src/modules/hoc/with-block-closer.js ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* eslint-disable max-len */
2
+ /**
3
+ * External dependencies
4
+ */
5
+ import React, { PureComponent } from 'react';
6
+ import PropTypes from 'prop-types';
7
+ import { noop } from 'lodash';
8
+
9
+ const ESCAPE_KEY = 27;
10
+ export const EVENT_NAMESPACE = 'tribe:click:proxy';
11
+ export const dispatch = ( e ) => {
12
+ e.target.dispatchEvent( new CustomEvent( EVENT_NAMESPACE, { bubbles: true } ) );
13
+ };
14
+ export const intercept = e => e.stopPropagation();
15
+
16
+ export default ( WrappedComponent ) => {
17
+ /**
18
+ * Prevents clicks on block or blacklisted DOM elements
19
+ * from closing the block
20
+ *
21
+ * @class WithBlockCloser
22
+ * @extends {PureComponent}
23
+ */
24
+ class WithBlockCloser extends PureComponent {
25
+ static displayName = `WithBlockCloser( ${ WrappedComponent.displayName || WrappedComponent.name || 'Component ' }`
26
+
27
+ static propTypes = {
28
+ onClose: PropTypes.func.isRequired,
29
+ classNameClickBlacklist: PropTypes.arrayOf( PropTypes.string ).isRequired,
30
+ isOpen: PropTypes.bool.isRequired,
31
+ };
32
+
33
+ static defaultProps = {
34
+ classNameClickBlacklist: [ '.edit-post-sidebar' ],
35
+ onClose: noop,
36
+ isOpen: false,
37
+ }
38
+
39
+ nodeRef = React.createRef();
40
+ _eventNamespace = EVENT_NAMESPACE;
41
+
42
+ /**
43
+ * dispatches custom events
44
+ *
45
+ * @memberof WithBlockCloser
46
+ * @param {Event} e event
47
+ */
48
+ _dispatchClickProxyEvent = dispatch;
49
+
50
+ // Prevent CustomEvents from propagating to document proxy listeners
51
+ _interceptClickProxyEvent = intercept;
52
+
53
+ /**
54
+ * keydown handler
55
+ *
56
+ * @memberof WithBlockCloser
57
+ * @param {Event} e event
58
+ */
59
+ handleKeyDown = ( e ) => {
60
+ if ( e.keyCode === ESCAPE_KEY ) {
61
+ this.props.onClose();
62
+ }
63
+ }
64
+
65
+ handleClick = () => this.props.onClose()
66
+
67
+ componentDidMount() {
68
+ this.props.isOpen && this._addEventListeners();
69
+ }
70
+
71
+ componentDidUpdate( prevProps ) {
72
+ if ( prevProps.isOpen !== this.props.isOpen ) {
73
+ this.props.isOpen
74
+ ? this._addEventListeners()
75
+ : this._removeEventListeners();
76
+ }
77
+ }
78
+
79
+ componentWillUnmount() {
80
+ this._removeEventListeners();
81
+ }
82
+
83
+ get blacklistedNodes() {
84
+ const classNames = this.props.classNameClickBlacklist.join( ', ' );
85
+ return Array.from( document.querySelectorAll( classNames ) );
86
+ }
87
+
88
+ get node() {
89
+ return this.nodeRef.current;
90
+ }
91
+
92
+ _addEventListeners() {
93
+ // Intercept custom events bubbled in block or blacklisted nodes
94
+ this.node.addEventListener( this._eventNamespace, this._interceptClickProxyEvent );
95
+ this.blacklistedNodes.forEach(
96
+ node => node.addEventListener( this._eventNamespace, this._interceptClickProxyEvent )
97
+ );
98
+
99
+ // Wait to receive custom events, if not intercepted, then go to click handler
100
+ document.addEventListener( this._eventNamespace, this.handleClick );
101
+ // Dispatch custom event on regular clicks
102
+ document.addEventListener( 'click', this._dispatchClickProxyEvent );
103
+
104
+ // Close on certain keypresses
105
+ document.addEventListener( 'keydown', this.handleKeyDown );
106
+ }
107
+
108
+ _removeEventListeners() {
109
+ this.node.removeEventListener( this._eventNamespace, this._interceptClickProxyEvent );
110
+ this.blacklistedNodes.forEach(
111
+ node => node.removeEventListener( this._eventNamespace, this._interceptClickProxyEvent )
112
+ );
113
+
114
+ document.removeEventListener( 'keydown', this.handleKeyDown );
115
+ document.removeEventListener( this._eventNamespace, this.handleClick );
116
+ document.removeEventListener( 'click', this._dispatchClickProxyEvent );
117
+ }
118
+
119
+ render() {
120
+ return (
121
+ <div ref={ this.nodeRef }>
122
+ <WrappedComponent { ...this.props } />
123
+ </div>
124
+ );
125
+ }
126
+ }
127
+
128
+ return WithBlockCloser;
129
+ };
common/src/modules/hoc/with-form.js ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { Component } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { bindActionCreators } from 'redux';
7
+ import { connect } from 'react-redux';
8
+ import { noop } from 'lodash';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { actions, selectors } from '@moderntribe/common/data/forms';
14
+
15
+ /**
16
+ * HOC that register a new object associated with set of fields for a form
17
+ *
18
+ * @param {function} getName Function used to set the name of the form, has a props param to generate the name
19
+ * @returns {function(*): *} Returns a function that takes a Component as argument and returns a component.
20
+ */
21
+ export default ( getName = noop ) => ( WrappedComponent ) => {
22
+ class WithForm extends Component {
23
+ static propTypes = {
24
+ registerForm: PropTypes.func,
25
+ postType: PropTypes.string,
26
+ };
27
+
28
+ componentDidMount() {
29
+ const name = getName( this.props );
30
+ const { registerForm, postType } = this.props;
31
+ registerForm( name, postType );
32
+ }
33
+
34
+ render() {
35
+ return <WrappedComponent { ...this.props } { ...this.additionalProps() } />;
36
+ }
37
+
38
+ additionalProps() {
39
+ const {
40
+ createDraft,
41
+ sendForm,
42
+ setSubmit,
43
+ editEntry,
44
+ maybeRemoveEntry,
45
+ } = this.props;
46
+ const name = getName( this.props );
47
+ return {
48
+ createDraft: ( fieldsObject ) => createDraft( name, fieldsObject ),
49
+ editEntry: ( fieldsObject ) => editEntry( name, fieldsObject ),
50
+ sendForm: ( fieldsObject, callback ) => sendForm( name, fieldsObject, callback ),
51
+ setSubmit: () => setSubmit( name ),
52
+ maybeRemoveEntry: ( details ) => maybeRemoveEntry( name, details ),
53
+ };
54
+ }
55
+ }
56
+
57
+ const mapStateToProps = ( state, props ) => {
58
+ const name = getName( props );
59
+ const modifiedProps = { name };
60
+ return {
61
+ edit: selectors.getFormEdit( state, modifiedProps ),
62
+ create: selectors.getFormCreate( state, modifiedProps ),
63
+ fields: selectors.getFormFields( state, modifiedProps ),
64
+ submit: selectors.getFormSubmit( state, modifiedProps ),
65
+ };
66
+ };
67
+
68
+ const mapDispatchToProps = ( dispatch ) => bindActionCreators( actions, dispatch );
69
+
70
+ return connect( mapStateToProps, mapDispatchToProps )( WithForm );
71
+ };
common/src/modules/hoc/with-save-data.js ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { Component } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import {
7
+ noop,
8
+ isEmpty,
9
+ isArray,
10
+ isObject,
11
+ keys,
12
+ } from 'lodash';
13
+ import isShallowEqual from '@wordpress/is-shallow-equal';
14
+
15
+ const blockRegister = {};
16
+
17
+ /**
18
+ * Higher order component that updates the attributes of a component if any of the properties of the
19
+ * attributes changes.
20
+ *
21
+ * Only updates the attributes that has changed with the new updates into the properties and only
22
+ * the ones specified as attributes params otherwise will fallback to the property attributes of the
23
+ * component to extract the keys of those to do the comparision.
24
+ *
25
+ * @param {object} selectedAttributes Set of attributes to only update fallback to this.props.attributes
26
+ * @returns {function} Return a new HOC
27
+ */
28
+ export default ( selectedAttributes = null ) => ( WrappedComponent ) => {
29
+ class WithSaveData extends Component {
30
+ static defaultProps = {
31
+ attributes: {},
32
+ setInitialState: noop,
33
+ setAttributes: noop,
34
+ name: '',
35
+ isolated: false,
36
+ onBlockCreated: noop,
37
+ onBlockRemoved: noop,
38
+ };
39
+
40
+ static propTypes = {
41
+ setAttributes: PropTypes.func,
42
+ setInitialState: PropTypes.func,
43
+ attributes: PropTypes.object,
44
+ name: PropTypes.string,
45
+ isolated: PropTypes.bool,
46
+ increaseRegister: PropTypes.func,
47
+ decreaseRegister: PropTypes.func,
48
+ onBlockCreated: PropTypes.func,
49
+ onBlockRemoved: PropTypes.func,
50
+ };
51
+
52
+ keys = [];
53
+ saving = null;
54
+
55
+ constructor( props ) {
56
+ super( props );
57
+ this.keys = this.generateKeys();
58
+ }
59
+
60
+ generateKeys() {
61
+ if ( isArray( this.attrs ) ) {
62
+ return this.attrs;
63
+ }
64
+
65
+ if ( isObject( this.attrs ) ) {
66
+ return keys( this.attrs );
67
+ }
68
+
69
+ console.warn( 'Make sure attributes is from a valid type: Array or Object' );
70
+
71
+ return [];
72
+ }
73
+
74
+ // At this point attributes has been set so no need to be set the initial state into the store here.
75
+ componentDidMount() {
76
+ const { setInitialState, attributes = {}, isolated, onBlockCreated } = this.props;
77
+
78
+ onBlockCreated( this.props );
79
+ this.registerBlock();
80
+
81
+ // Prevent to set the initial state for blocks that are copies from others
82
+ // overwrite this with the isolated property of the block to `true`
83
+ if ( this.blockCount() > 1 && ! isolated ) {
84
+ return;
85
+ }
86
+
87
+ setInitialState( {
88
+ ...this.props,
89
+ get( key, defaultValue ) {
90
+ return key in attributes ? attributes[ key ] : defaultValue;
91
+ },
92
+ } );
93
+ }
94
+
95
+ componentWillUnmount() {
96
+ const { onBlockRemoved } = this.props;
97
+ this.unregisterBlock();
98
+ onBlockRemoved( this.props );
99
+ }
100
+
101
+ registerBlock() {
102
+ const { name } = this.props;
103
+ blockRegister[ name ] = name in blockRegister ? blockRegister[ name ] + 1 : 1;
104
+ }
105
+
106
+ unregisterBlock() {
107
+ const { name } = this.props;
108
+ blockRegister[ name ] -= 1;
109
+ }
110
+
111
+ blockCount() {
112
+ const { name } = this.props;
113
+ return blockRegister[ name ];
114
+ }
115
+
116
+ componentDidUpdate() {
117
+ const diff = this.calculateDiff();
118
+
119
+ if ( isShallowEqual( this.saving, diff ) ) {
120
+ return;
121
+ }
122
+
123
+ this.saving = diff;
124
+
125
+ if ( isEmpty( diff ) ) {
126
+ return;
127
+ }
128
+
129
+ this.props.setAttributes( diff );
130
+ }
131
+
132
+ calculateDiff() {
133
+ const attributes = this.attrs;
134
+ return this.keys.reduce( ( diff, key ) => {
135
+ if ( key in this.props && ! isShallowEqual( attributes[ key ], this.props[ key ] ) ) {
136
+ diff[ key ] = this.props[ key ];
137
+ }
138
+ return diff;
139
+ }, {} );
140
+ }
141
+
142
+ get attrs() {
143
+ return selectedAttributes || this.props.attributes || {};
144
+ }
145
+
146
+ render() {
147
+ return <WrappedComponent { ...this.props } />;
148
+ }
149
+ }
150
+
151
+ WithSaveData.displayName = `WithSaveData( ${ WrappedComponent.displayName || WrappedComponent.name || 'Component ' }`;
152
+
153
+ return WithSaveData;
154
+ };
155
+
common/src/modules/hoc/with-selected.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { Component } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import {
7
+ noop,
8
+ } from 'lodash';
9
+
10
+ /**
11
+ * Higher order component that executes two functions:
12
+ *
13
+ * - `onBlockFocus` when the block is selected
14
+ * - `onBlockBlur` when the block losses focus after being selected
15
+ *
16
+ * @returns {function} Return a new HOC
17
+ */
18
+ export default () => ( WrappedComponent ) => {
19
+ class WithSelected extends Component {
20
+ static defaultProps = {
21
+ isSelected: false,
22
+ onBlockFocus: noop,
23
+ onBlockBlur: noop,
24
+ };
25
+
26
+ static propTypes = {
27
+ onBlockFocus: PropTypes.func,
28
+ onBlockBlur: PropTypes.func,
29
+ isSelected: PropTypes.bool,
30
+ };
31
+
32
+ componentDidMount() {
33
+ const { isSelected, onBlockFocus, onBlockBlur } = this.props;
34
+ if ( isSelected ) {
35
+ onBlockFocus();
36
+ } else {
37
+ onBlockBlur();
38
+ }
39
+ }
40
+
41
+ componentDidUpdate( prevProps ) {
42
+ const { isSelected, onBlockFocus, onBlockBlur } = this.props;
43
+
44
+ if ( prevProps.isSelected === isSelected ) {
45
+ return;
46
+ }
47
+
48
+ if ( isSelected ) {
49
+ onBlockFocus();
50
+ } else {
51
+ onBlockBlur();
52
+ }
53
+ }
54
+
55
+ render() {
56
+ return <WrappedComponent { ...this.props } />;
57
+ }
58
+ }
59
+
60
+ WithSelected.displayName = `WithIsSelected( ${ WrappedComponent.displayName || WrappedComponent.name || 'Component ' }`;
61
+
62
+ return WithSelected;
63
+ };
64
+
common/src/modules/hoc/with-store.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { store } from '@moderntribe/common/store';
10
+
11
+ const getStore = () => store;
12
+
13
+ export default ( additionalProps = {} ) => ( WrappedComponent ) => {
14
+
15
+ const WithStore = ( props ) => {
16
+ const extraProps = {
17
+ ...additionalProps,
18
+ store: getStore(),
19
+ };
20
+
21
+ return <WrappedComponent { ...props } { ...extraProps } />;
22
+ };
23
+
24
+ return WithStore;
25
+
26
+ };
common/src/modules/icons/alert.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="19" height="17" xmlns="http://www.w3.org/2000/svg"><path d="M10.632 12.074H8.388l-.391-6.33c0-.5.675-.905 1.507-.905.832 0 1.507.405 1.507.904l-.379 6.33zm-.092 2.96c-.247.206-.593.31-1.037.31-.449 0-.8-.104-1.054-.31-.254-.206-.38-.492-.38-.86 0-.371.121-.66.367-.866.244-.206.6-.308 1.067-.308.462 0 .813.103 1.05.308.239.206.358.496.358.866 0 .368-.123.654-.37.86zm8.42.614L10.344.618C10.117.313 9.81 0 9.504 0c-.307 0-.613.312-.84.619L.032 15.675c-.082.316-.06.831.72 1.222h17.494c.805-.402.804-.936.714-1.25z" fill="#D0021B" fill-rule="evenodd"/></svg>
common/src/modules/icons/clipboard.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="16" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M12 16H4v-2h8v2zm0-6H4v2h8v-2zm2-9h-2v2h2v15H2V3h2V1H2a2 2 0 0 0-2 2v15a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm-4 2V2a2 2 0 1 0-4 0v1a2 2 0 0 0-2 2v1h8V5a2 2 0 0 0-2-2z"/></svg>
common/src/modules/icons/close.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M14.36 15.78L8 9.41l-6.36 6.37-1.42-1.42L6.59 8 .22 1.64 1.64.22 8 6.59 14.36.23l1.41 1.41L9.41 8l6.36 6.36z" fill="#191E23"/></svg>
common/src/modules/icons/cog.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M17.867 10c0-.568-.059-1.122-.17-1.656L19.5 6.732l-1.967-3.464-2.283.786a7.813 7.813 0 0 0-2.813-1.657L11.967 0H8.033l-.472 2.396c-1.043.348-2 .913-2.81 1.657l-2.284-.785L.5 6.732l1.804 1.612a8.054 8.054 0 0 0 0 3.312L.5 13.268l1.967 3.464 2.283-.786a7.813 7.813 0 0 0 2.813 1.657L8.033 20h3.934l.472-2.396a7.83 7.83 0 0 0 2.81-1.657l2.284.786 1.967-3.464-1.804-1.613c.112-.535.171-1.09.171-1.657V10zM10 14c-2.173 0-3.934-1.79-3.934-4S7.826 6 10 6c2.173 0 3.934 1.79 3.934 4s-1.76 4-3.934 4z" fill="#191E23"/></svg>
common/src/modules/icons/index.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ export { default as TEC } from './tec.svg';
2
+ export { default as Close } from './close.svg';
3
+ export { default as Alert } from './alert.svg';
4
+ export { default as Clipboard } from './clipboard.svg';
5
+ export { default as Cog } from './cog.svg';
6
+ export { default as Info } from './info.svg';
7
+ export { default as Pencil } from './pencil.svg';
8
+ export { default as Tag } from './tag.svg';
9
+ export { default as User } from './user.svg';
common/src/modules/icons/info.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M11 7H9V5h2v2zm0 2H9v6h2V9zm-1-7c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8zm0-2c5.523 0 10 4.477 10 10s-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0z"/></svg>
common/src/modules/icons/link.svg ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <svg width="26" height="15" xmlns="http://www.w3.org/2000/svg">
2
+ <path
3
+ d="M12.6 7.576H9.227v1.732H12.6v3.742a.2.2 0 0 1-.198.2H1.918a.199.199 0 0 1-.198-.2V5.092c0-.111.089-.201.198-.201h10.485a.2.2 0 0 1 .198.2v2.485zm5.755-3.86l-.066.067L17.16 4.93l2.601 2.646H14.33V2.843a.797.797 0 0 0-.79-.803h-.74c-.034.003-.32.004-.856.004V.804a.797.797 0 0 0-.79-.804c-.446 0-.8.36-.8.803v1.24H3.992V.804A.797.797 0 0 0 3.202 0c-.447 0-.8.36-.8.803v1.24h-.796c-.041 0-.058-.003-.075-.003H.79c-.436 0-.79.36-.79.803V3.91c0 .055.006.108.016.16v8.978a.36.36 0 0 0-.008.082v1.067c0 .443.354.803.79.803h.74a12956.843 12956.843 0 0 1 12.01 0c.437 0 .79-.36.79-.803V13.13a.36.36 0 0 0-.008-.082v-3.74h5.43l-2.599 2.643 1.192 1.215L23 8.44l-4.645-4.725z"
4
+ fill="#009FD4"
5
+ fillRule="evenodd"
6
+ />
7
+ </svg>
common/src/modules/icons/pencil.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M17.254 2.483L15.282.51C14.942.17 14.5 0 14.023 0c-.476 0-.918.17-1.258.51L1.543 11.767c-.034.034-.034.034-.034.068 0 0 0 .034-.034.034-.034.034-.034.034-.034.068v.034c0 .034 0 .034-.034.034L.012 17.14a.57.57 0 0 0 .136.51c.102.102.238.17.374.17.034 0 .102 0 .136-.034l5.136-1.428c.034 0 .034 0 .034-.034h.034c.034 0 .034-.034.068-.034 0 0 .034 0 .034-.034.034-.034.034-.034.068-.034L17.254 4.999c.68-.68.68-1.836 0-2.516zM2.461 16.188l-.884-.885.578-2.176 2.448 2.448-2.142.613zm3.197-1.089l-1.123-1.122-.748-.748-1.122-1.122 9.522-9.522 1.122 1.122.748.748 1.123 1.122L5.658 15.1zM16.506 4.251l-.612.612L12.9 1.87l.612-.612a.692.692 0 0 1 .51-.204c.204 0 .374.068.51.204l1.973 1.973c.272.306.272.748 0 1.02z" fill="#8D949B"/></svg>
common/src/modules/icons/tag.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M18 .007h-7.087c-.53 0-1.04.21-1.414.586L.592 9.5a2 2 0 0 0 0 2.827l7.086 7.086a2 2 0 0 0 2.827 0l8.906-8.906c.376-.374.587-.883.587-1.413V2.007a2 2 0 0 0-2-2H18zM15.007 7a2 2 0 1 1-.09-3.999A2 2 0 0 1 15.007 7z" fill="#23282D"/></svg>
common/src/modules/icons/tec.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 29.99 39.98"><defs><clipPath id="a" transform="translate(-984 -154.02)"><path class="cls-1" d="M989 159.02h19.99V189H989z"/></clipPath><clipPath id="b" transform="translate(-984 -154.02)"><path class="cls-1" d="M0 0h1281v1258H0z"/></clipPath><clipPath id="c" transform="translate(-984 -154.02)"><path class="cls-1" d="M989 159h20v31h-20z"/></clipPath><clipPath id="d" transform="translate(-984 -154.02)"><path d="M1005.81 159a3.24 3.24 0 0 0-3.18 3.28v6.42a3 3 0 0 0-1.36-.32 3.1 3.1 0 0 1-4.54 0 3 3 0 0 0-1.36.32v-6.4a3.18 3.18 0 1 0-6.36 0v16.42a10 10 0 1 0 20 .1.65.65 0 0 0 0-.1V162.3a3.24 3.24 0 0 0-3.2-3.3zm-1.36 3.28a1.36 1.36 0 1 1 2.73 0v12.1a5.84 5.84 0 0 0-2.73-1.22zm-4.54 9.38a1.36 1.36 0 1 1 2.73 0v1.41h-2.74zm-4.54 0a1.36 1.36 0 1 1 2.73 0v1.41h-2.73zm3.63 15.5a8.32 8.32 0 0 1-8.17-8.44V162.3a1.36 1.36 0 1 1 2.73 0V174a6.53 6.53 0 0 0 .65 2.78 5 5 0 0 0 4.79 2.85h.33a5.59 5.59 0 0 0-1.24 3.75.91.91 0 1 0 1.82 0 3.54 3.54 0 0 1 3.63-3.75.94.94 0 0 0 0-1.88H999a3.42 3.42 0 0 1-2.55-.94 3.84 3.84 0 0 1-1-1.88h8.06a4.22 4.22 0 0 1 .91.12 3.29 3.29 0 0 1 2.64 2.69 5 5 0 0 1 .08.94 9.11 9.11 0 0 1 0 .94 8.3 8.3 0 0 1-8.13 7.51z" clip-rule="evenodd" fill="none"/></clipPath><clipPath id="e" transform="translate(-984 -154.02)"><path class="cls-1" d="M989 159h20v30h-20z"/></clipPath></defs><g data-name="Layer 2"><g data-name="Layer 1"><path d="M8.4 6.07l-2 .83-.25 19.88s1.71 3.33 1.88 3.54 3.83 2.79 3.83 2.79l4.75.46 5.42-3.21 1.5-3.83.58-6V7.77l-2.12-2-2.33 1.42-.13 9.38-2.21-1.17-2.37 1-1.8-1.42-2.71.67V6.86z" fill="#fff"/><g clip-path="url(#a)"><g clip-path="url(#b)"><g clip-path="url(#c)"><g clip-path="url(#d)"><g clip-path="url(#e)"><path fill="#020202" d="M0 0h29.99v39.98H0z"/></g></g></g></g></g></g></g></svg>
common/src/modules/icons/user.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8 0c2.21 0 4 1.79 4 4s-1.79 4-4 4-4-1.79-4-4 1.79-4 4-4zm0 16s8 0 8-2c0-2.4-3.9-5-8-5s-8 2.6-8 5c0 2 8 2 8 2z"/></svg>
common/src/modules/package.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "@moderntribe/common",
3
+ "version": "0.3.2-alpha",
4
+ "description": "Common Blocks Editor modules",
5
+ "main": "src/resources/main.js",
6
+ "scripts": {},
7
+ "keywords": [
8
+ "gutenberg",
9
+ "common"
10
+ ],
11
+ "private": true,
12
+ "repository": "git+https://github.com/moderntribe/tribe-common.git",
13
+ "author": "Modern Tribe",
14
+ "license": "GPL-2.0-or-later",
15
+ "dependencies": {
16
+ }
17
+ }
common/src/modules/store/configure-store.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { createStore, applyMiddleware } from 'redux';
5
+ import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';
6
+ import { augmentStore } from '@nfen/redux-reducer-injector';
7
+ import thunk from 'redux-thunk';
8
+ import createSagaMiddleware from 'redux-saga';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import reducer from '@moderntribe/common/data';
14
+ import { wpRequest } from './middlewares';
15
+
16
+ const sagaMiddleware = createSagaMiddleware();
17
+
18
+ export default () => {
19
+ if ( window.__tribe_common_store__ ) {
20
+ return window.__tribe_common_store__;
21
+ }
22
+
23
+ const middlewares = [
24
+ thunk,
25
+ sagaMiddleware,
26
+ wpRequest,
27
+ ];
28
+
29
+ const composeEnhancers = composeWithDevTools( { name: 'tribe/common' } );
30
+
31
+ const store = createStore( reducer( {} ), composeEnhancers( applyMiddleware( ...middlewares ) ) );
32
+ augmentStore( reducer, store );
33
+ store.run = sagaMiddleware.run;
34
+ window.__tribe_common_store__ = store;
35
+
36
+ return store;
37
+ };
common/src/modules/store/index.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import 'regenerator-runtime/runtime';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import configureStore from './configure-store';
10
+ import * as middlewares from './middlewares';
11
+
12
+ export const store = configureStore();
13
+ export { middlewares };
common/src/modules/store/middlewares/index.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ export { default as wpRequest } from './request';
2
+ import * as request from './request';
3
+ export { request };
common/src/modules/store/middlewares/request/__tests__/__snapshots__/actions.test.js.snap ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`[STORE] - Request actions WP Request action 1`] = `
4
+ Object {
5
+ "meta": Object {
6
+ "actions": Object {},
7
+ "path": "tribe_organizer/1225",
8
+ },
9
+ "type": "@@MT/COMMON/WP_REQUEST",
10
+ }
11
+ `;
common/src/modules/store/middlewares/request/__tests__/actions.test.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { actions } from '@moderntribe/common/store/middlewares/request';
5
+
6
+ describe( '[STORE] - Request actions', () => {
7
+ test( 'WP Request action', () => {
8
+ const meta = {
9
+ path: 'tribe_organizer/1225',
10
+ actions: {},
11
+ };
12
+ expect( actions.wpRequest( meta ) ).toMatchSnapshot();
13
+ } );
14
+ } );
common/src/modules/store/middlewares/request/__tests__/types.test.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
5
+ import { types } from '@moderntribe/common/store/middlewares/request';
6
+
7
+ describe( '[STORE] - Request types', () => {
8
+ it( 'Should return the types values', () => {
9
+ expect( types.WP_REQUEST ).toBe( `${ PREFIX_COMMON_STORE }/WP_REQUEST` );
10
+ } );
11
+ } );
common/src/modules/store/middlewares/request/__tests__/utils.test.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { utils } from '@moderntribe/common/store/middlewares/request';
5
+
6
+ const wpParamsExpected = {
7
+ orderby: 'title',
8
+ status: [ 'draft', 'publish' ],
9
+ order: 'asc',
10
+ page: 1,
11
+ };
12
+
13
+ describe( 'Request utils', () => {
14
+ it( 'Should generate the WP params', () => {
15
+ expect( utils.toWpParams( {} ) ).toEqual( wpParamsExpected );
16
+ } );
17
+
18
+ it( 'Should order by relevance if has search', () => {
19
+ expect( utils.toWpParams( { search: 'tribe' } ) )
20
+ .toEqual( {
21
+ ...wpParamsExpected,
22
+ search: 'tribe',
23
+ orderby: 'relevance',
24
+ } );
25
+ } );
26
+
27
+ it( 'Should update the exclude parameter', () => {
28
+ expect( utils.toWpParams( { exclude: [] } ) ).toEqual( wpParamsExpected );
29
+ expect( utils.toWpParams( { exclude: [ 1, 2 ] } ) )
30
+ .toEqual( {
31
+ ...wpParamsExpected,
32
+ exclude: [ 1, 2 ],
33
+ } );
34
+ } );
35
+
36
+ it( 'Should generate a WP Query', () => {
37
+ expect( utils.toWPQuery() ).toBe( 'orderby=title&status=draft%2Cpublish&order=asc&page=1' );
38
+ expect( utils.toWPQuery( { search: 'Modern Tribe' } ) )
39
+ .toBe( 'orderby=relevance&status=draft%2Cpublish&order=asc&page=1&search=Modern%20Tribe' );
40
+ } );
41
+
42
+ it( 'Should return the total of pages', () => {
43
+ const headers = new Headers();
44
+ headers.append( 'x-wp-totalpages', 5 );
45
+ expect( headers.get( 'x-wp-totalpages' ) ).toBe( '5' );
46
+ expect( utils.getTotalPages( headers ) ).toBe( 5 );
47
+
48
+ headers.set( 'x-wp-totalpages', '5' );
49
+ expect( headers.get( 'x-wp-totalpages' ) ).toBe( '5' );
50
+ expect( utils.getTotalPages( headers ) ).toBe( 5 );
51
+
52
+ headers.set( 'x-wp-totalpages', '5.3' );
53
+ expect( headers.get( 'x-wp-totalpages' ) ).toBe( '5.3' );
54
+ expect( utils.getTotalPages( headers ) ).toBe( 5 );
55
+
56
+ headers.delete( 'x-wp-totalpages' );
57
+ headers.set( 'x-wp', 5 );
58
+ expect( utils.getTotalPages( headers ) ).toBe( 0 );
59
+ expect( utils.getTotalPages( new Headers() ) ).toBe( 0 );
60
+ } );
61
+ } );
common/src/modules/store/middlewares/request/__tests__/wp-request.test.js ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import wpRequest, { actions } from '@moderntribe/common/store/middlewares/request';
5
+
6
+ let create;
7
+ const nextMock = jest.fn();
8
+ const meta = {
9
+ path: '',
10
+ params: {},
11
+ actions: {
12
+ none: jest.fn(),
13
+ start: jest.fn(),
14
+ success: jest.fn(),
15
+ error: jest.fn(),
16
+ },
17
+ };
18
+
19
+ describe( '[STORE] - wp-request middleware', () => {
20
+ let _fetch;
21
+ beforeAll( () => {
22
+ create = () => {
23
+ const invoke = ( action ) => wpRequest()( nextMock )( action );
24
+ return { next: nextMock, invoke };
25
+ };
26
+ _fetch = global.fetch;
27
+ } );
28
+
29
+ afterEach( () => {
30
+ global.fetch = _fetch;
31
+ } );
32
+
33
+ afterEach( () => {
34
+ nextMock.mockClear();
35
+ meta.actions.start.mockClear();
36
+ meta.actions.error.mockClear();
37
+ meta.actions.none.mockClear();
38
+ meta.actions.success.mockClear();
39
+ window.wp.apiRequest = undefined;
40
+ } );
41
+
42
+ it( 'Should move through a unknown action', () => {
43
+ const { next, invoke } = create();
44
+ const action = { type: 'UNKNOWN' };
45
+ invoke( action );
46
+
47
+ expect( next ).toHaveBeenCalled();
48
+ expect( next ).toHaveBeenCalledTimes( 1 );
49
+ expect( next ).toHaveBeenCalledWith( action );
50
+ } );
51
+
52
+ it( 'Should execute the none action if the path is empty', () => {
53
+ const { next, invoke } = create();
54
+ const action = actions.wpRequest( meta );
55
+ invoke( action );
56
+
57
+ expect( next ).toHaveBeenCalled();
58
+ expect( next ).toHaveBeenCalledTimes( 1 );
59
+ expect( next ).toHaveBeenCalledWith( action );
60
+ expect( meta.actions.none ).toHaveBeenCalled();
61
+ expect( meta.actions.none ).toHaveBeenCalledTimes( 1 );
62
+ expect( meta.actions.none ).toHaveBeenLastCalledWith( meta.path );
63
+ expect( meta.actions.start ).not.toHaveBeenCalled();
64
+ expect( meta.actions.success ).not.toHaveBeenCalled();
65
+ expect( meta.actions.error ).not.toHaveBeenCalled();
66
+ } );
67
+
68
+ it( 'Should execute the correct actions on success', async () => {
69
+ const { invoke } = create();
70
+
71
+ const body = {
72
+ id: 1217,
73
+ date: '2018-05-26T23:07:05',
74
+ meta: {},
75
+ };
76
+
77
+ const headers = new Headers();
78
+
79
+ global.fetch = jest.fn().mockImplementation( () =>
80
+ Promise.resolve( {
81
+ ok: true,
82
+ status: 200,
83
+ json: () => body,
84
+ headers,
85
+ } ),
86
+ );
87
+
88
+ await invoke( actions.wpRequest( { ...meta, path: 'tribe_organizer/1217' } ) );
89
+
90
+ expect.assertions( 8 );
91
+ expect( meta.actions.none ).not.toHaveBeenCalled();
92
+ expect( meta.actions.error ).not.toHaveBeenCalled();
93
+ expect( meta.actions.start ).toHaveBeenCalledWith( 'wp/v2/tribe_organizer/1217', {} );
94
+ expect( meta.actions.start ).toHaveBeenCalled();
95
+ expect( meta.actions.start ).toHaveBeenCalledTimes( 1 );
96
+ expect( meta.actions.success ).toHaveBeenCalled();
97
+ expect( meta.actions.success )
98
+ .toHaveBeenCalledWith( { body, headers } );
99
+ expect( meta.actions.success ).toHaveBeenCalledTimes( 1 );
100
+ } );
101
+
102
+ it( 'execute success actions on 201 response code - creation code', async () => {
103
+ const { invoke } = create();
104
+
105
+ const body = {
106
+ id: 201,
107
+ date: '2018-05-26T23:07:05',
108
+ meta: {
109
+ title: 'Creating a post....'
110
+ },
111
+ };
112
+
113
+ const headers = new Headers();
114
+
115
+ global.fetch = jest.fn().mockImplementation( () =>
116
+ Promise.resolve( {
117
+ ok: true,
118
+ status: 201,
119
+ json: () => body,
120
+ headers,
121
+ } ),
122
+ );
123
+
124
+ await invoke( actions.wpRequest( { ...meta, path: 'tribe_organizer/1217' } ) );
125
+
126
+ expect.assertions( 8 );
127
+ expect( meta.actions.none ).not.toHaveBeenCalled();
128
+ expect( meta.actions.error ).not.toHaveBeenCalled();
129
+ expect( meta.actions.start ).toHaveBeenCalledWith( 'wp/v2/tribe_organizer/1217', {} );
130
+ expect( meta.actions.start ).toHaveBeenCalled();
131
+ expect( meta.actions.start ).toHaveBeenCalledTimes( 1 );
132
+ expect( meta.actions.success ).toHaveBeenCalled();
133
+ expect( meta.actions.success ).toHaveBeenCalledWith( { body, headers } );
134
+ expect( meta.actions.success ).toHaveBeenCalledTimes( 1 );
135
+ } );
136
+
137
+ it( 'Should reject on 404 status code', async () => {
138
+ const { invoke } = create();
139
+
140
+ global.fetch = jest.fn().mockImplementation( () => Promise.resolve( { status: 404 } ) );
141
+
142
+ const error = await invoke( actions.wpRequest( { ...meta, path: 'tribe_organizer/1217' } ) );
143
+ expect.assertions( 6 );
144
+ expect( meta.actions.none ).not.toHaveBeenCalled();
145
+ expect( meta.actions.success ).not.toHaveBeenCalled();
146
+ expect( meta.actions.start ).toHaveBeenCalled();
147
+ expect( meta.actions.start ).toHaveBeenCalledWith( 'wp/v2/tribe_organizer/1217', {} );
148
+ expect( meta.actions.error ).toHaveBeenCalled();
149
+ expect( meta.actions.error ).toHaveBeenCalledWith( error );
150
+ } );
151
+
152
+ it( 'Should execute the correct actions on failure', async () => {
153
+ const { invoke } = create();
154
+
155
+ global.fetch = jest.fn().mockImplementation( () => Promise.reject( 'Wrong path' ) );
156
+
157
+ const error = await invoke( actions.wpRequest( {
158
+ ...meta,
159
+ path: 'tribe_organizer/1217//////',
160
+ } ) );
161
+ expect.assertions( 6 );
162
+ expect( meta.actions.none ).not.toHaveBeenCalled();
163
+ expect( meta.actions.success ).not.toHaveBeenCalled();
164
+ expect( meta.actions.start ).toHaveBeenCalled();
165
+ expect( meta.actions.start ).toHaveBeenCalledWith( 'wp/v2/tribe_organizer/1217//////', {} );
166
+ expect( meta.actions.error ).toHaveBeenCalled();
167
+ expect( meta.actions.error ).toHaveBeenCalledWith( error );
168
+ } );
169
+ } );
common/src/modules/store/middlewares/request/actions.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import * as types from './types';
5
+
6
+ export const wpRequest = ( meta ) => ( {
7
+ type: types.WP_REQUEST,
8
+ meta,
9
+ } );
common/src/modules/store/middlewares/request/index.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import * as types from './types';
5
+ import * as actions from './actions';
6
+ import * as utils from './utils';
7
+
8
+ export { default } from './wp-request';
9
+ export { types, actions, utils };
common/src/modules/store/middlewares/request/types.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PREFIX_COMMON_STORE } from '@moderntribe/common/data/utils';
5
+
6
+ export const WP_REQUEST = `${ PREFIX_COMMON_STORE }/WP_REQUEST`;
common/src/modules/store/middlewares/request/utils.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { isEmpty, isUndefined } from 'lodash';
5
+ import { stringify } from 'querystringify';
6
+
7
+ export const toWpParams = ( args = {} ) => {
8
+ const params = {
9
+ orderby: 'title',
10
+ status: [ 'draft', 'publish' ],
11
+ order: 'asc',
12
+ page: 1,
13
+ ...args,
14
+ };
15
+
16
+ if ( ! isUndefined( params.search ) && ! isEmpty( params.search ) ) {
17
+ params.orderby = 'relevance';
18
+ }
19
+
20
+ if ( isEmpty( params.exclude ) ) {
21
+ delete params.exclude;
22
+ }
23
+
24
+ return params;
25
+ };
26
+
27
+ export const toWPQuery = ( args = {} ) => stringify( toWpParams( args ) );
28
+
29
+ export const getTotalPages = ( headers ) => {
30
+ const totalPages = parseInt( headers.get( 'x-wp-totalpages' ), 10 );
31
+ return isNaN( totalPages ) ? 0 : totalPages;
32
+ };
common/src/modules/store/middlewares/request/wp-request.js ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { noop, get, inRange } from 'lodash';
5
+ import 'whatwg-fetch';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { rest } from '@moderntribe/common/utils/globals';
11
+ import { types } from '@moderntribe/common/store/middlewares/request';
12
+
13
+ export default () => ( next ) => async ( action ) => {
14
+ if ( action.type !== types.WP_REQUEST ) {
15
+ return next( action );
16
+ }
17
+
18
+ const { meta = {} } = action;
19
+
20
+ const {
21
+ path = '',
22
+ params = {},
23
+ } = meta;
24
+
25
+ next( action );
26
+
27
+ const { url = '', nonce = {} } = rest();
28
+ const wpRESTNonce = nonce.wp_rest || '';
29
+ const namespaces = rest.namespaces || {};
30
+ const core = namespaces.core || 'wp/v2';
31
+ const BASE = `${ url }${ core }`;
32
+
33
+ const actions = {
34
+ start: noop,
35
+ success: noop,
36
+ error: noop,
37
+ none: noop,
38
+ ...get( meta, 'actions', {} ),
39
+ };
40
+
41
+ if ( path === '' ) {
42
+ actions.none( path );
43
+ return;
44
+ }
45
+
46
+ const endpoint = `${ BASE }/${ path }`;
47
+
48
+ actions.start( endpoint, params );
49
+
50
+ const headers = {
51
+ 'Accept': 'application/json',
52
+ 'Content-Type': 'application/json',
53
+ ...get( params, 'headers', {} ),
54
+ 'X-WP-Nonce': wpRESTNonce,
55
+ };
56
+
57
+ try {
58
+ const response = await fetch( endpoint, {
59
+ ...params,
60
+ credentials: 'include',
61
+ headers,
62
+ } );
63
+
64
+ const { status } = response;
65
+ // inRange includes 200 but excludes 300 from the range so it's from 200 up to 299
66
+ if ( ! inRange( status, 200, 300 ) ) {
67
+ throw response;
68
+ }
69
+ const body = await response.json();
70
+ actions.success( { body, headers: response.headers } );
71
+ return [ response, body ];
72
+ } catch ( error ) {
73
+ actions.error( error );
74
+ return error;
75
+ }
76
+ };
common/src/modules/utils/__tests__/__snapshots__/globals.test.js.snap ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Tests for globals.js Should match the default value for the globals values 1`] = `
4
+ Object {
5
+ "common": Object {
6
+ "countries": Object {},
7
+ "rest": Object {
8
+ "namespaces": Object {
9
+ "core": "wp/v2",
10
+ },
11
+ "nonce": Object {
12
+ "add_ticket_nonce": "0878f40fb2",
13
+ "wp_rest": "cedcd6967b",
14
+ },
15
+ "url": "http://gutenberg.local/wp-json/",
16
+ },
17
+ "settings": Object {},
18
+ "usStates": Object {},
19
+ },
20
+ "tec": Object {
21
+ "googleMap": Object {},
22
+ },
23
+ "tickets": Object {
24
+ "default_currency": "$",
25
+ "default_provider": "Tribe__Tickets_Plus__Commerce__WooCommerce__Main",
26
+ "providers": Array [
27
+ Object {
28
+ "class": "Tribe__Tickets_Plus__Commerce__WooCommerce__Main",
29
+ "currency": "$",
30
+ "currency_position": "prefix",
31
+ "name": "WooCommerce",
32
+ },
33
+ ],
34
+ },
35
+ }
36
+ `;
37
+
38
+ exports[`Tests for globals.js Should match the default value for the globals values 2`] = `
39
+ Object {
40
+ "common": Object {
41
+ "countries": Object {},
42
+ "rest": Object {
43
+ "namespaces": Object {
44
+ "core": "wp/v2",
45
+ },
46
+ "nonce": Object {
47
+ "add_ticket_nonce": "0878f40fb2",
48
+ "wp_rest": "cedcd6967b",
49
+ },
50
+ "url": "http://gutenberg.local/wp-json/",
51
+ },
52
+ "settings": Object {},
53
+ "usStates": Object {},
54
+ },
55
+ "tec": Object {
56
+ "googleMap": Object {},
57
+ },
58
+ "tickets": Object {
59
+ "default_currency": "$",
60
+ "default_provider": "Tribe__Tickets_Plus__Commerce__WooCommerce__Main",
61
+ "providers": Array [
62
+ Object {
63
+ "class": "Tribe__Tickets_Plus__Commerce__WooCommerce__Main",
64
+ "currency": "$",
65
+ "currency_position": "prefix",
66
+ "name": "WooCommerce",
67
+ },
68
+ ],
69
+ },
70
+ }
71
+ `;
72
+
73
+ exports[`Tests for globals.js get default value 1`] = `Array []`;
74
+
75
+ exports[`Tests for globals.js rest value 1`] = `
76
+ Object {
77
+ "namespaces": Object {
78
+ "core": "wp/v2",
79
+ },
80
+ "nonce": Object {
81
+ "add_ticket_nonce": "0878f40fb2",
82
+ "wp_rest": "cedcd6967b",
83
+ },
84
+ "url": "http://gutenberg.local/wp-json/",
85
+ }
86
+ `;
87
+
88
+ exports[`Tests for globals.js rest value 2`] = `
89
+ Object {
90
+ "add_ticket_nonce": "0878f40fb2",
91
+ "wp_rest": "cedcd6967b",
92
+ }
93
+ `;
common/src/modules/utils/__tests__/__snapshots__/time.test.js.snap ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Tests for time.js fromMilliseconds() test 1`] = `"Argument \`ms\` provided to \`fromMilliseconds\` is not a number or is NaN."`;
4
+
5
+ exports[`Tests for time.js fromMilliseconds() test 2`] = `"Argument \`ms\` provided to \`fromMilliseconds\` is not a number or is NaN."`;
6
+
7
+ exports[`Tests for time.js fromMilliseconds() test 3`] = `"Argument \`format\` provided to \`formatTime\` is not a recognized format."`;
8
+
9
+ exports[`Tests for time.js fromSeconds() test 1`] = `"Argument \`s\` provided to \`fromSeconds\` is not a number or is NaN."`;
10
+
11
+ exports[`Tests for time.js fromSeconds() test 2`] = `"Argument \`s\` provided to \`fromSeconds\` is not a number or is NaN."`;
12
+
13
+ exports[`Tests for time.js fromSeconds() test 3`] = `"Argument \`format\` provided to \`formatTime\` is not a recognized format."`;
14
+
15
+ exports[`Tests for time.js toMilliseconds() test 1`] = `"Argument \`time\` provided to \`toMilliseconds\` is not a recognized format."`;
16
+
17
+ exports[`Tests for time.js toMilliseconds() test 2`] = `"Argument \`time\` provided to \`toMilliseconds\` is not a recognized format."`;
18
+
19
+ exports[`Tests for time.js toMilliseconds() test 3`] = `"Argument \`time\` provided to \`toMilliseconds\` is not a recognized format."`;
20
+
21
+ exports[`Tests for time.js toMilliseconds() test 4`] = `"Argument \`time\` provided to \`toMilliseconds\` contains minutes or seconds greater than 59."`;
22
+
23
+ exports[`Tests for time.js toMilliseconds() test 5`] = `"Argument \`format\` provided to \`toMilliseconds\` is not a recognized format."`;
24
+
25
+ exports[`Tests for time.js toSeconds() test 1`] = `"Argument \`time\` provided to \`toMilliseconds\` is not a recognized format."`;
26
+
27
+ exports[`Tests for time.js toSeconds() test 2`] = `"Argument \`time\` provided to \`toMilliseconds\` is not a recognized format."`;
28
+
29
+ exports[`Tests for time.js toSeconds() test 3`] = `"Argument \`time\` provided to \`toMilliseconds\` is not a recognized format."`;
30
+
31
+ exports[`Tests for time.js toSeconds() test 4`] = `"Argument \`time\` provided to \`toMilliseconds\` contains minutes or seconds greater than 59."`;
32
+
33
+ exports[`Tests for time.js toSeconds() test 5`] = `"Argument \`format\` provided to \`toMilliseconds\` is not a recognized format."`;
common/src/modules/utils/__tests__/date.test.js ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { date, moment as momentUtil } from '@moderntribe/common/utils';
5
+ import moment from 'moment';
6
+
7
+ const {
8
+ FORMATS,
9
+ TODAY,
10
+ timezones,
11
+ timezonesAsSelectData,
12
+ toNaturalLanguage,
13
+ rangeToNaturalLanguage,
14
+ labelToDate,
15
+ } = date;
16
+
17
+ jest.mock( '@moderntribe/common/utils/timezone', () => ( {
18
+ getItems: () => [
19
+ {
20
+ options: [
21
+ {
22
+ key: 'America/Argentina/Buenos_Aires',
23
+ text: 'Argentina - Buenos Aires',
24
+ },
25
+ ],
26
+ },
27
+ {
28
+ options: [
29
+ {
30
+ key: 'America/Argentina/Catamarca',
31
+ text: 'Argentina - Catamarca',
32
+ },
33
+ ],
34
+ },
35
+ ],
36
+ } ) );
37
+
38
+ afterAll( () => {
39
+ jest.unmock( '@moderntribe/common/utils/timezone' );
40
+ } );
41
+
42
+ describe( 'Tests for date.js', () => {
43
+ test( 'formats', () => {
44
+ const draft = {
45
+ TIME: 'HH:mm:ss',
46
+ DATE_TIME: 'YYYY-MM-DD HH:mm:ss',
47
+ WP: {
48
+ time: 'g:i a',
49
+ time24Hr: 'H:i',
50
+ date: 'F j, Y',
51
+ datetime: 'F j, Y g:i a',
52
+ dateNoYear: 'F j',
53
+ },
54
+ DATABASE: {
55
+ date: 'Y-m-d',
56
+ datetime: 'Y-m-d H:i:s',
57
+ time: 'H:i:s',
58
+ },
59
+ TIMEZONE: {
60
+ string: 'UTC',
61
+ },
62
+ };
63
+ expect( FORMATS ).toEqual( draft );
64
+ } );
65
+
66
+ test( 'today', () => {
67
+ const now = new Date();
68
+ expect( TODAY ).toBeInstanceOf( Date );
69
+ expect( TODAY ).hasOwnProperty( 'getDay' );
70
+ expect( TODAY.getDay() ).toEqual( now.getDay() );
71
+ } );
72
+
73
+ test( 'timezones', () => {
74
+ const expected = [
75
+ {
76
+ key: 'America/Argentina/Buenos_Aires',
77
+ text: 'Argentina - Buenos Aires',
78
+ },
79
+ {
80
+ key: 'America/Argentina/Catamarca',
81
+ text: 'Argentina - Catamarca',
82
+ },
83
+ ];
84
+ expect( timezones() ).toEqual( expected );
85
+ } );
86
+
87
+ test( 'timezonesAsSelectData', () => {
88
+ const expected = [
89
+ {
90
+ value: 'America/Argentina/Buenos_Aires',
91
+ label: 'Argentina - Buenos Aires',
92
+ },
93
+ {
94
+ value: 'America/Argentina/Catamarca',
95
+ label: 'Argentina - Catamarca',
96
+ },
97
+ ];
98
+ expect( timezonesAsSelectData() ).toEqual( expected );
99
+ } );
100
+
101
+ describe( 'toNaturalLanguage', () => {
102
+ it( 'Should return empty string when non parsed', () => {
103
+ const defaultDetail = { month: '', day: '', year: '', time: '' };
104
+ expect( toNaturalLanguage( {} ) ).toEqual( { moment: null, text: '', detail: defaultDetail, isValid: false } );
105
+ expect( toNaturalLanguage( { date: undefined } ) ).toEqual( {
106
+ moment: undefined,
107
+ text: '',
108
+ detail: defaultDetail,
109
+ isValid: false
110
+ } );
111
+ expect( toNaturalLanguage( { date: '' } ) ).toEqual( {
112
+ moment: '',
113
+ text: '',
114
+ detail: defaultDetail,
115
+ isValid: false
116
+ } );
117
+ } );
118
+
119
+ it( 'Should return the parsed date', () => {
120
+ expect( toNaturalLanguage( { date: '2018-05-04 17:00:00' } ) )
121
+ .toEqual( {
122
+ moment: momentUtil.toMoment( '2018-05-04 17:00:00' ),
123
+ text: 'May 4 2018 5:00 pm',
124
+ detail: {
125
+ month: 'May',
126
+ day: '4',
127
+ year: '2018',
128
+ time: '5:00 pm',
129
+ },
130
+ isValid: true,
131
+ } );
132
+ expect( toNaturalLanguage( { date: '2019-12-24 12:00:00' } ) )
133
+ .toEqual( {
134
+ moment: momentUtil.toMoment( '2019-12-24 12:00:00' ),
135
+ text: 'December 24 2019 12:00 pm',
136
+ detail: {
137
+ month: 'December',
138
+ day: '24',
139
+ year: '2019',
140
+ time: '12:00 pm',
141
+ },
142
+ isValid: true,
143
+ } );
144
+ } );
145
+ } );
146
+
147
+ describe( 'rangeToNaturalLanguage', () => {
148
+ it( 'Should return empty string when range is invalid', () => {
149
+ expect( rangeToNaturalLanguage( null, null ) ).toBe( '' );
150
+ expect( rangeToNaturalLanguage( undefined, undefined ) ).toBe( '' );
151
+ expect( rangeToNaturalLanguage( '', '' ) ).toBe( '' );
152
+ } );
153
+
154
+ it( 'Should return only the start date', () => {
155
+ expect( rangeToNaturalLanguage( '2019-12-24 12:00:00' ) )
156
+ .toBe( 'December 24 2019 at 12:00 pm' );
157
+ expect( rangeToNaturalLanguage( '2019-12-24 12:00:00', '' ) )
158
+ .toBe( 'December 24 2019 at 12:00 pm' );
159
+ } );
160
+
161
+ it( 'Should return the range with time on same day', () => {
162
+ expect( rangeToNaturalLanguage( '2019-12-24 12:00:00', '2019-12-24 17:00:00' ) )
163
+ .toBe( 'December 24 2019 at 12:00 pm - 5:00 pm' );
164
+ } );
165
+
166
+ it( 'Should return the range without year on same year', () => {
167
+ expect( rangeToNaturalLanguage( '2019-12-24 12:00:00', '2019-12-29 17:00:00' ) )
168
+ .toBe( 'December 24 2019 at 12:00 pm - December 29 at 5:00 pm' );
169
+ } );
170
+
171
+ it( 'Should return the range on different years', () => {
172
+ expect( rangeToNaturalLanguage( '2019-12-24 12:00:00', '2020-12-24 17:00:00' ) )
173
+ .toBe( 'December 24 2019 at 12:00 pm - December 24 2020 at 5:00 pm' );
174
+ } );
175
+ } );
176
+
177
+ describe( 'labelToDate - be aware chrono module is being mocked to avoid parsing', () => {
178
+ test( 'Default value when date is invalid', () => {
179
+ expect( labelToDate() ).toEqual( { start: null, end: null } );
180
+ } );
181
+
182
+ test( 'Valid dates', () => {
183
+ const momentDate = moment( '12-25-1995', 'MM-DD-YYYY' );
184
+ expect( labelToDate( momentDate ) )
185
+ .toEqual( { start: momentUtil.toDateTime( momentDate ), end: momentUtil.toDateTime( momentDate ) } );
186
+ } );
187
+ } );
188
+
189
+ } );
common/src/modules/utils/__tests__/dom.test.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import {
5
+ hasClass,
6
+ isRootNode,
7
+ searchParent,
8
+ } from '@moderntribe/common/utils/dom';
9
+
10
+ describe( 'Tests for dom.js', () => {
11
+ beforeAll( () => {
12
+ window.document.body.classList.add( 'one', 'two' );
13
+ } );
14
+
15
+ afterAll( () => {
16
+ window.document.body.classList.remove( 'one', 'two' );
17
+ } );
18
+
19
+ describe( 'hasClass dom utility', () => {
20
+ it( 'Should return false when the dom element does not have any class', () => {
21
+ expect( hasClass( window.document.body, [] ) ).toBe( false );
22
+ expect( hasClass( window.document.body, [ 'five', 'seven' ] ) ).toBe( false );
23
+ expect( hasClass( window.document.body, [ 'eight' ] ) ).toBe( false );
24
+ } );
25
+
26
+ it( 'Should return true whe the dom element has any of the classes', () => {
27
+ expect( hasClass( window.document.body, [ 'one', 'two' ] ) ).toBe( true );
28
+ expect( hasClass( window.document.body, [ 'two', 'one' ] ) ).toBe( true );
29
+ expect( hasClass( window.document.body, [ 'four', 'two' ] ) ).toBe( true );
30
+ expect( hasClass( window.document.body, [ 'one', 'five' ] ) ).toBe( true );
31
+ expect( hasClass( window.document.body, [ 'nostyle', 'six', 'seven', 'one' ] ) ).toBe( true );
32
+ } );
33
+ } );
34
+
35
+ test( 'Test for searchParent', () => {
36
+ expect( searchParent( null ) ).toBeFalsy();
37
+ const treeWithNode = {
38
+ parentNode: {
39
+ value: 10,
40
+ parentNode: {
41
+ value: 20,
42
+ },
43
+ },
44
+ };
45
+
46
+ const callback = jest.fn( ( node ) => node.value === 20 );
47
+ const result = searchParent( treeWithNode, callback );
48
+ expect( callback ).toBeCalled();
49
+ expect( callback ).toBeCalledWith( { value: 20 } );
50
+ expect( result ).toBeTruthy();
51
+
52
+ const treeWithoutNode = {
53
+ parentNode: {
54
+ parentNode: {
55
+ parentNode: {
56
+ top: {
57
+ document: 'global',
58
+ },
59
+ },
60
+ },
61
+ },
62
+ };
63
+
64
+ expect( searchParent( treeWithoutNode ) ).toBeFalsy();
65
+ } );
66
+
67
+ test( 'Test for isRootNode', () => {
68
+ expect( isRootNode( null ) ).toBeFalsy();
69
+ expect( isRootNode( 'text' ) ).toBeFalsy();
70
+ expect( isRootNode( window.document.body ) ).toBeFalsy();
71
+ expect( isRootNode( window.document ) ).toBeTruthy();
72
+ } );
73
+ } );
common/src/modules/utils/__tests__/globals.test.js ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import {
5
+ google,
6
+ mapsAPI,
7
+ settings,
8
+ list,
9
+ get,
10
+ config,
11
+ rest,
12
+ restNonce,
13
+ } from '@moderntribe/common/utils/globals';
14
+
15
+ describe( 'Tests for globals.js', () => {
16
+
17
+ beforeAll( () => {
18
+ window.tribe_editor_config = {
19
+ common: {
20
+ countries: {},
21
+ usStates: {},
22
+ settings: {},
23
+ rest: {
24
+ namespaces: {
25
+ core: 'wp/v2',
26
+ },
27
+ nonce: {
28
+ wp_rest: 'cedcd6967b',
29
+ add_ticket_nonce: '0878f40fb2',
30
+ },
31
+ url: 'http://gutenberg.local/wp-json/',
32
+ },
33
+ },
34
+ tec: {
35
+ googleMap: {},
36
+ },
37
+ tickets: {
38
+ providers: [ {
39
+ class: 'Tribe__Tickets_Plus__Commerce__WooCommerce__Main',
40
+ currency: '$',
41
+ currency_position: 'prefix',
42
+ name: 'WooCommerce',
43
+ } ],
44
+ default_provider: 'Tribe__Tickets_Plus__Commerce__WooCommerce__Main',
45
+ default_currency: '$',
46
+ },
47
+ };
48
+ } );
49
+
50
+ test( 'Should match the default value for the globals values', () => {
51
+ expect( get( 'random' ) ).toBe( undefined );
52
+ expect( get( 'google' ) ).toBe( undefined );
53
+ expect( google() ).toBe( undefined );
54
+ expect( get( 'tribe_editor_config' ) ).toMatchSnapshot();
55
+ expect( settings() ).toEqual( {} );
56
+ expect( mapsAPI() ).toEqual( {} );
57
+ expect( list() ).toEqual( {
58
+ countries: {},
59
+ us_states: {},
60
+ } );
61
+ expect( config() ).toMatchSnapshot();
62
+ } );
63
+
64
+ test( 'get default value', () => {
65
+ expect( get( 'UNKNOWN', 10 ) ).toBe( 10 );
66
+ expect( get( 'tribe_js_config', [] ) ).toMatchSnapshot();
67
+ } );
68
+
69
+ test( 'rest value', () => {
70
+ expect( rest() ).toMatchSnapshot();
71
+ expect( restNonce() ).toMatchSnapshot();
72
+ } );
73
+
74
+ afterAll( () => {
75
+ delete window.tribe_editor_config;
76
+ } );
77
+ } );
78
+
79
+ describe( 'Test default values on globals', () => {
80
+ test( 'rest default values', () => {
81
+ expect( rest() ).toEqual( {} );
82
+ expect( restNonce() ).toEqual( {} );
83
+ } );
84
+ } );
common/src/modules/utils/__tests__/input.test.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { sendValue } from '@moderntribe/common/utils/input';
5
+
6
+ describe( 'Tests for input.js', () => {
7
+ const event = {
8
+ target: {
9
+ value: 'Sample',
10
+ },
11
+ };
12
+
13
+ test( 'Callback being executed', () => {
14
+ const mockCallback = jest.fn();
15
+ sendValue( mockCallback )( event );
16
+ expect( mockCallback ).toHaveBeenCalled();
17
+ expect( mockCallback ).toHaveBeenCalledTimes( 1 );
18
+ expect( mockCallback ).toHaveBeenCalledWith( 'Sample' );
19
+ } );
20
+ } );
common/src/modules/utils/__tests__/moment.test.js ADDED
@@ -0,0 +1,328 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import moment from 'moment/moment';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import {
10
+ date,
11
+ moment as momentUtil,
12
+ time,
13
+ } from '@moderntribe/common/utils';
14
+
15
+ const FORMAT = 'MM-DD-YYYY HH:mm:ss';
16
+
17
+ describe( 'Tests for moment.js', () => {
18
+ let console;
19
+ beforeAll( () => {
20
+ console = window.console;
21
+ window.console = {
22
+ ...console,
23
+ warn: jest.fn(),
24
+ };
25
+ } );
26
+
27
+ afterAll( () => {
28
+ window.console = console;
29
+ } );
30
+
31
+ test( 'roundTime', () => {
32
+ const test1 = momentUtil.roundTime(
33
+ moment( '05-09-2018 12:26:02', FORMAT ),
34
+ );
35
+ expect( test1 ).toBeInstanceOf( moment );
36
+ expect( test1.hour() ).toEqual( 12 );
37
+ expect( test1.minutes() ).toEqual( 0 );
38
+ expect( test1.seconds() ).toEqual( 0 );
39
+
40
+ const test2 = momentUtil.roundTime(
41
+ moment( '05-09-2018 15:30:02', FORMAT ),
42
+ );
43
+ expect( test2 ).toBeInstanceOf( moment );
44
+ expect( test2.hour() ).toEqual( 15 );
45
+ expect( test2.minutes() ).toEqual( 30 );
46
+ expect( test2.seconds() ).toEqual( 0 );
47
+
48
+ const test3 = momentUtil.roundTime(
49
+ moment( '05-09-2018 23:59:59', FORMAT ),
50
+ );
51
+ expect( test3 ).toBeInstanceOf( moment );
52
+ expect( test3.hour() ).toEqual( 23 );
53
+ expect( test3.minutes() ).toEqual( 30 );
54
+ expect( test3.seconds() ).toEqual( 0 );
55
+
56
+ const test4 = momentUtil.roundTime(
57
+ moment( '05-09-2018 08:01:59', FORMAT ),
58
+ );
59
+ expect( test4 ).toBeInstanceOf( moment );
60
+ expect( test4.hour() ).toEqual( 8 );
61
+ expect( test4.minutes() ).toEqual( 0 );
62
+ expect( test4.seconds() ).toEqual( 0 );
63
+ } );
64
+
65
+ test( 'toMoment', () => {
66
+ const input = momentUtil.toMoment( new Date( 'January 2, 2015 08:01:59 UTC' ).toISOString() );
67
+
68
+ expect( input ).toBeInstanceOf( moment );
69
+ expect( input.date() ).toEqual( 2 );
70
+ expect( input.month() ).toEqual( 0 );
71
+ expect( input.year() ).toEqual( 2015 );
72
+ expect( input.hour() ).toEqual( 8 );
73
+ expect( input.minutes() ).toEqual( 1 );
74
+ expect( input.seconds() ).toEqual( 59 );
75
+ expect( input.milliseconds() ).toEqual( 0 );
76
+ expect( input.format( FORMAT ) ).toEqual( '01-02-2015 08:01:59' );
77
+ } );
78
+
79
+ test( 'replaceDate', () => {
80
+ expect( () => momentUtil.replaceDate( 'Sample string', 123123 ) ).toThrowError();
81
+
82
+ const a = moment( '02-28-2010 14:24:40', FORMAT );
83
+ const b = moment( '05-10-2012 20:14:20', FORMAT );
84
+
85
+ const replaced = momentUtil.replaceDate( a, b );
86
+ expect( replaced ).toBeInstanceOf( moment );
87
+ expect( replaced.date() ).toEqual( 10 );
88
+ expect( replaced.month() ).toEqual( 4 );
89
+ expect( replaced.year() ).toEqual( 2012 );
90
+ expect( replaced.hour() ).toEqual( 14 );
91
+ expect( replaced.minute() ).toEqual( 24 );
92
+ expect( replaced.second() ).toEqual( 40 );
93
+ expect( replaced.format( FORMAT ) ).toEqual( '05-10-2012 14:24:40' );
94
+ } );
95
+
96
+ test( 'setTimeInSeconds', () => {
97
+ expect( () => momentUtil.setTimeInSeconds( 'Sample String', 123123 ) ).toThrowError();
98
+
99
+ const a = moment( '02-28-2010 14:24:40', FORMAT );
100
+ const SECONDS = ( 12.5 ) * 60 * 60;
101
+ const replaced = momentUtil.setTimeInSeconds( a, SECONDS );
102
+ expect( replaced ).toBeInstanceOf( moment );
103
+ expect( replaced.date() ).toEqual( 28 );
104
+ expect( replaced.month() ).toEqual( 1 );
105
+ expect( replaced.year() ).toEqual( 2010 );
106
+ expect( replaced.hour() ).toEqual( 12 );
107
+ expect( replaced.minute() ).toEqual( 30 );
108
+ expect( replaced.seconds() ).toEqual( 0 );
109
+ expect( replaced.milliseconds() ).toEqual( 0 );
110
+
111
+ const test2 = momentUtil.setTimeInSeconds( a, 0 );
112
+ expect( test2.date() ).toEqual( 28 );
113
+ expect( test2.month() ).toEqual( 1 );
114
+ expect( test2.year() ).toEqual( 2010 );
115
+ expect( test2.hour() ).toEqual( 0 );
116
+ expect( test2.minute() ).toEqual( 0 );
117
+ expect( test2.seconds() ).toEqual( 0 );
118
+ expect( test2.milliseconds() ).toEqual( 0 );
119
+ } );
120
+
121
+ test( 'totalSeconds', () => {
122
+ expect( momentUtil.totalSeconds( null ) ).toEqual( 0 );
123
+ expect( momentUtil.totalSeconds( new Date() ) ).toEqual( 0 );
124
+ expect( momentUtil.totalSeconds( moment().startOf( 'day' ) ) ).toEqual( 0 );
125
+ expect( momentUtil.totalSeconds( moment( 'May 23, 2018 12:30 am', 'MMM D, YYYY k:m a' ) ) )
126
+ .toEqual( time.HALF_HOUR_IN_SECONDS );
127
+ } );
128
+
129
+ test( 'toDateTime', () => {
130
+ const converted = momentUtil.toDateTime( moment() );
131
+ expect( typeof converted ).toBe( 'string' );
132
+ const format = momentUtil.toFormat( date.FORMATS.DATABASE.datetime );
133
+ expect( converted ).toBe( moment().format( format ) );
134
+ } );
135
+
136
+ test( 'toDate', () => {
137
+ const converted = momentUtil.toDate( moment() );
138
+ expect( typeof converted ).toBe( 'string' );
139
+ expect( typeof converted ).toBe( 'string' );
140
+ const format = momentUtil.toFormat( date.FORMATS.WP.date );
141
+ expect( converted ).toBe( moment().format( format ) );
142
+ } );
143
+
144
+ test( 'toDateNoYear', () => {
145
+ const converted = momentUtil.toDateNoYear( moment() );
146
+ expect( typeof converted ).toBe( 'string' );
147
+ expect( converted ).toBe( moment().format( 'MMMM D' ) );
148
+ } );
149
+
150
+ test( 'toTime', () => {
151
+ const converted = momentUtil.toTime( moment() );
152
+ expect( typeof converted ).toBe( 'string' );
153
+ expect( converted ).toBe( moment().format( 'h:mm a' ) );
154
+ } );
155
+
156
+ test( 'toTime24Hr', () => {
157
+ const converted = momentUtil.toTime24Hr( moment() );
158
+ expect( typeof converted ).toBe( 'string' );
159
+ expect( converted ).toBe( moment().format( 'HH:mm' ) );
160
+ } );
161
+
162
+ test( 'toDatabaseDate', () => {
163
+ const converted = momentUtil.toDatabaseDate( moment() );
164
+ expect( typeof converted ).toBe( 'string' );
165
+ expect( converted ).toBe( moment().format( 'YYYY-MM-DD' ) );
166
+ } );
167
+
168
+ test( 'toDatabaseTime', () => {
169
+ const converted = momentUtil.toDatabaseTime( moment() );
170
+ expect( typeof converted ).toBe( 'string' );
171
+ expect( converted ).toBe( moment().format( 'HH:mm:ss' ) );
172
+ } );
173
+
174
+ test( 'toDatePicker', () => {
175
+ const converted = momentUtil.toDatePicker( moment() );
176
+ expect( typeof converted ).toBe( 'string' );
177
+ expect( converted ).toBe( moment().format( 'YYYY-MM-DDTHH:mm:ss' ) );
178
+ } );
179
+
180
+ test( 'isSameDay', () => {
181
+ expect( momentUtil.isSameDay() ).toBe( false );
182
+ expect( momentUtil.isSameDay( false, '' ) ).toBe( false );
183
+ expect( momentUtil.isSameDay( 0, null ) ).toBe( false );
184
+ expect( momentUtil.isSameDay( moment(), moment().endOf( 'day' ) ) ).toBeTruthy();
185
+ expect( momentUtil.isSameDay( moment().endOf( 'day' ), moment().endOf( 'day' ) ) ).toBeTruthy();
186
+ expect( momentUtil.isSameDay( moment(), moment().add( 10, 'days' ) ) ).toBeFalsy();
187
+ expect( momentUtil.isSameDay( new Date(), new Date() ) ).toBeTruthy();
188
+ } );
189
+
190
+ test( 'isSameMonth', () => {
191
+ const date = moment( 'October 8, 2018 5:30 pm', 'MMMM D, Y h:mm a' );
192
+
193
+ expect( momentUtil.isSameMonth() ).toBe( false );
194
+ expect( momentUtil.isSameMonth( false, '' ) ).toBe( false );
195
+ expect( momentUtil.isSameMonth( 0, null ) ).toBe( false );
196
+ expect( momentUtil.isSameMonth( date, date.clone().add( 24, 'days' ) ) ).toBe( false );
197
+ expect( momentUtil.isSameMonth( date, date.clone().add( 23, 'days' ) ) ).toBe( true );
198
+ expect( momentUtil.isSameMonth( date, date.clone().endOf( 'month' ) ) ).toBe( true );
199
+ expect( momentUtil.isSameMonth( date.clone().endOf( 'month' ), date.clone().endOf( 'month' ) ) ).toBe( true );
200
+ expect( momentUtil.isSameMonth( date, date.clone().add( 10, 'days' ) ) ).toBe( true );
201
+ expect( momentUtil.isSameMonth( date, date ) ).toBe( true );
202
+ } );
203
+
204
+ test( 'isSameYear', () => {
205
+ expect( momentUtil.isSameYear(
206
+ moment( 'May 23, 2018 12:30 am', 'MMM D, YYYY k:m a' ),
207
+ moment( 'September 15, 2018 5:30 am', 'MMM D, YYYY k:m a' )
208
+ ) ).toBeTruthy();
209
+ expect( momentUtil.isSameYear(
210
+ moment( 'May 23, 2022 12:30 am', 'MMM D, YYYY k:m a' ),
211
+ moment( 'September 15, 2022 5:30 am', 'MMM D, YYYY k:m a' )
212
+ ) ).toBeTruthy();
213
+ expect( momentUtil.isSameYear(
214
+ moment( 'May 23, 2018 12:30 am', 'MMM D, YYYY k:m a' ),
215
+ moment( 'September 15, 2022 5:30 am', 'MMM D, YYYY k:m a' )
216
+ ) ).toBeFalsy();
217
+ } );
218
+
219
+ test( 'toMomentFromDate', () => {
220
+ expect( () => momentUtil.toMomentFromDate( '' ) ).toThrowError();
221
+ expect( () => momentUtil.toMomentFromDate( moment() ) ).toThrowError();
222
+ Date.now = jest.fn( () => '2018-05-04T05:23:19.000Z' );
223
+ const format = 'YYYY-MM-DD HH:mm:ss';
224
+ const now = new Date( 'December 17, 2015 03:24:00' );
225
+ expect( momentUtil.toMomentFromDate( now ) ).toBeInstanceOf( moment );
226
+ const expected = momentUtil.toMomentFromDate( now ).format( format );
227
+ expect( expected ).toBe( '2015-12-17 00:00:00' );
228
+ } );
229
+
230
+ test( 'toFormat', () => {
231
+ expect( momentUtil.toFormat( '' ) ).toEqual( '' );
232
+ expect( momentUtil.toFormat( 'Y-m-d H:i:s' ) ).toEqual( 'YYYY-MM-DD HH:mm:ss' );
233
+ expect( momentUtil.toFormat( 'F j, Y g:i a' ) ).toEqual( 'MMMM D, YYYY h:mm a' );
234
+ expect( momentUtil.toFormat( 'tLBIOPTZcr' ) ).toEqual( '' );
235
+ expect( momentUtil.toFormat( 'd' ) ).toEqual( 'DD' );
236
+ expect( momentUtil.toFormat( 'D' ) ).toEqual( 'ddd' );
237
+ expect( momentUtil.toFormat( 'j' ) ).toEqual( 'D' );
238
+ expect( momentUtil.toFormat( 'l' ) ).toEqual( 'dddd' );
239
+ expect( momentUtil.toFormat( 'N' ) ).toEqual( 'E' );
240
+ expect( momentUtil.toFormat( 'S' ) ).toEqual( 'o' );
241
+ expect( momentUtil.toFormat( 'w' ) ).toEqual( 'e' );
242
+ expect( momentUtil.toFormat( 'z' ) ).toEqual( 'DDD' );
243
+ expect( momentUtil.toFormat( 'W' ) ).toEqual( 'W' );
244
+ expect( momentUtil.toFormat( 'F' ) ).toEqual( 'MMMM' );
245
+ expect( momentUtil.toFormat( 'm' ) ).toEqual( 'MM' );
246
+ expect( momentUtil.toFormat( 'M' ) ).toEqual( 'MMM' );
247
+ expect( momentUtil.toFormat( 'n' ) ).toEqual( 'M' );
248
+ expect( momentUtil.toFormat( 'o' ) ).toEqual( 'YYYY' );
249
+ expect( momentUtil.toFormat( 'Y' ) ).toEqual( 'YYYY' );
250
+ expect( momentUtil.toFormat( 'y' ) ).toEqual( 'YY' );
251
+ expect( momentUtil.toFormat( 'a' ) ).toEqual( 'a' );
252
+ expect( momentUtil.toFormat( 'A' ) ).toEqual( 'A' );
253
+ expect( momentUtil.toFormat( 'g' ) ).toEqual( 'h' );
254
+ expect( momentUtil.toFormat( 'G' ) ).toEqual( 'H' );
255
+ expect( momentUtil.toFormat( 'h' ) ).toEqual( 'hh' );
256
+ expect( momentUtil.toFormat( 'H' ) ).toEqual( 'HH' );
257
+ expect( momentUtil.toFormat( 'i' ) ).toEqual( 'mm' );
258
+ expect( momentUtil.toFormat( 's' ) ).toEqual( 'ss' );
259
+ expect( momentUtil.toFormat( 'u' ) ).toEqual( 'SSS' );
260
+ expect( momentUtil.toFormat( 'e' ) ).toEqual( 'zz' );
261
+ expect( momentUtil.toFormat( 'U' ) ).toEqual( 'X' );
262
+ } );
263
+
264
+ describe( 'parseFormats', () => {
265
+ test( 'Use DB format', () => {
266
+ const format = 'YYYY-MM-DD HH:mm:ss';
267
+ const expected = momentUtil.parseFormats( '2019-11-19 22:32:00' );
268
+ expect( expected.format( format ) ).toBe( '2019-11-19 22:32:00' );
269
+ } );
270
+
271
+ test( 'Use WP datetime format', () => {
272
+ const format = 'MMMM D, YYYY h:mm a';
273
+ const expected = momentUtil.parseFormats( 'November 19, 2019 10:32 pm' );
274
+ expect( expected.format( format ) ).toBe( 'November 19, 2019 10:32 pm' );
275
+ } );
276
+
277
+ test( 'Invalid date', () => {
278
+ Date.now = jest.fn( () => new Date( 'July 1, 2018 00:07:31 UTC' ).toISOString() );
279
+ const format = 'YYYY-MM-DD HH:mm:ss';
280
+ const expected = momentUtil.parseFormats( 'No date!' );
281
+ expect( expected.format( format ) ).toBe( '2018-07-01 00:07:31' );
282
+ expect( window.console.warn ).toHaveBeenCalled();
283
+ } );
284
+ } );
285
+
286
+ describe( 'resetTimes', () => {
287
+ const format = 'YYYY-MM-DD HH:mm:ss';
288
+ it( 'Should add an hour in seconds', () => {
289
+ const startMoment = moment( new Date( 'July 19, 2018 19:30:00 UTC' ).toISOString() );
290
+ const { start, end } = momentUtil.resetTimes( startMoment );
291
+ expect( start.format( format ) ).toBe( '2018-07-19 19:30:00' );
292
+ expect( end.format( format ) ).toBe( '2018-07-19 20:30:00' );
293
+ } );
294
+
295
+ it( 'Should add hour in seconds on start of the day', () => {
296
+ const startMoment = moment( new Date( 'July 19, 2018 00:00:00 UTC' ).toISOString() );
297
+ const { start, end } = momentUtil.resetTimes( startMoment );
298
+ expect( start.format( format ) ).toBe( '2018-07-19 00:00:00' );
299
+ expect( end.format( format ) ).toBe( '2018-07-19 01:00:00' );
300
+ } );
301
+
302
+ it( 'Should prevent overflow to the next day', () => {
303
+ const startMoment = moment( new Date( 'July 19, 2018 23:59:59 UTC' ).toISOString() );
304
+ const { start, end } = momentUtil.resetTimes( startMoment );
305
+ expect( start.format( format ) ).toBe( '2018-07-19 22:59:59' );
306
+ expect( end.format( format ) ).toBe( '2018-07-19 23:59:59' );
307
+ } );
308
+ } );
309
+
310
+ describe( 'adjustStart', () => {
311
+ const format = 'YYYY-MM-DD HH:mm:ss';
312
+ it( 'Should keep the same order when start is before', () => {
313
+ const start = moment( new Date( 'July 10, 2018 14:30:00 UTC' ).toISOString() );
314
+ const end = moment( new Date( 'July 10, 2018 20:35:00 UTC' ).toISOString() );
315
+ const output = momentUtil.adjustStart( start, end );
316
+ expect( output.start.format( format ) ).toBe( '2018-07-10 14:30:00' );
317
+ expect( output.end.format( format ) ).toBe( '2018-07-10 20:35:00' );
318
+ } );
319
+
320
+ it( 'Should adjust the start and end time', () => {
321
+ const start = moment( new Date( 'July 10, 2018 20:35:00 UTC' ).toISOString() );
322
+ const end = moment( new Date( 'July 10, 2018 10:30:00 UTC' ).toISOString() );
323
+ const output = momentUtil.adjustStart( start, end );
324
+ expect( output.start.format( format ) ).toBe( '2018-07-10 20:35:00' );
325
+ expect( output.end.format( format ) ).toBe( '2018-07-10 21:35:00' );
326
+ } );
327
+ } );
328
+ } );
common/src/modules/utils/__tests__/number.test.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { percentage } from '@moderntribe/common/utils/number';
5
+
6
+ describe( 'percentage', () => {
7
+ test( 'with default values', () => {
8
+ expect( percentage() ).toBe( 0 );
9
+ } );
10
+
11
+ test( 'with non numbers', () => {
12
+ expect( () => percentage( 'modern', 'tribe' ) ).toThrow();
13
+ } );
14
+
15
+ test( 'limits outside 100 percent', () => {
16
+ expect( percentage( 120, 100 ) ).toBe( 120 );
17
+ expect( percentage( 1220, 100 ) ).toBe( 1220 );
18
+ expect( percentage( 101, 100 ) ).toBe( 101 );
19
+ expect( percentage( 100, 100 ) ).toBe( 100 );
20
+ } );
21
+
22
+ test( 'common cases', () => {
23
+ expect( percentage( 10, 100 ) ).toBe( 10 );
24
+ expect( percentage( 17, 100 ) ).toBe( 17 );
25
+ expect( percentage( 20, 1000 ) ).toBe( 2 );
26
+ expect( percentage( 155, 1000 ) ).toBe( 15.5 );
27
+ expect( percentage( 999, 1000 ) ).toBe( 99.9 );
28
+ expect( percentage( 1000, 1000 ) ).toBe( 100 );
29
+ } );
30
+
31
+ test( 'negative percentages', () => {
32
+ expect( percentage( -10, 100 ) ).toBe( -10 );
33
+ expect( percentage( -80, 100 ) ).toBe( -80 );
34
+ expect( percentage( -200, 100 ) ).toBe( -200 );
35
+ } );
36
+ } );
common/src/modules/utils/__tests__/proptypes.test.js ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { noop } from 'lodash';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import * as proptypes from '@moderntribe/common/utils/proptypes';
10
+
11
+ describe( 'Tests for proptypes utils', () => {
12
+ describe( 'createChainableValidator', () => {
13
+ it( 'should not return an error when prop is undefined and is not required', () => {
14
+ const props = {};
15
+ const chainedValidator = jest.fn( proptypes.createChainableValidator( noop ) );
16
+ chainedValidator( props, 'time', 'component' );
17
+
18
+ expect( chainedValidator ).toHaveReturned();
19
+ expect( chainedValidator ).toHaveReturnedWith( null );
20
+ } );
21
+
22
+ it( 'should return an error when prop is undefined and is required', () => {
23
+ const props = {};
24
+ const chainedValidator = jest.fn( proptypes.createChainableValidator( noop ).isRequired );
25
+ chainedValidator( props, 'time', 'component' );
26
+
27
+ expect( chainedValidator ).toHaveReturned();
28
+ expect( chainedValidator ).toHaveReturnedWith( Error( 'The prop `time` is marked as required in `component`, but its value is `undefined`.' ) );
29
+ } );
30
+
31
+ it( 'should return an error when prop is null and is required', () => {
32
+ const props = {
33
+ time: null,
34
+ };
35
+ const chainedValidator = jest.fn( proptypes.createChainableValidator( noop ).isRequired );
36
+ chainedValidator( props, 'time', 'component' );
37
+
38
+ expect( chainedValidator ).toHaveReturned();
39
+ expect( chainedValidator ).toHaveReturnedWith( Error( 'The prop `time` is marked as required in `component`, but its value is `null`.' ) );
40
+ } );
41
+
42
+ it( 'should call the validator when prop is provided, not undefined or null, and is not required', () => {
43
+ const props = {
44
+ time: '15:34',
45
+ };
46
+ const validator = jest.fn( noop );
47
+ const chainedValidator = jest.fn( proptypes.createChainableValidator( validator ) );
48
+ chainedValidator( props, 'time', 'component' );
49
+
50
+ expect( validator ).toHaveBeenCalled();
51
+ expect( validator ).toHaveBeenCalledTimes( 1 );
52
+ } );
53
+
54
+ it( 'should call the validator when prop is provided, not undefined or null, and is required', () => {
55
+ const props = {
56
+ time: '15:34',
57
+ };
58
+ const validator = jest.fn( noop );
59
+ const chainedValidator = jest.fn( proptypes.createChainableValidator( validator ).isRequired );
60
+ chainedValidator( props, 'time', 'component' );
61
+
62
+ expect( validator ).toHaveBeenCalled();
63
+ expect( validator ).toHaveBeenCalledTimes( 1 );
64
+ } );
65
+ } );
66
+
67
+ describe( 'timeRegex', () => {
68
+ it( 'should return true when provided proper time formatted string', () => {
69
+ expect( proptypes.timeRegex.test( '00:00' ) ).toEqual( true );
70
+ expect( proptypes.timeRegex.test( '23:59' ) ).toEqual( true );
71
+ expect( proptypes.timeRegex.test( '12:42' ) ).toEqual( true );
72
+ expect( proptypes.timeRegex.test( '03:01' ) ).toEqual( true );
73
+ expect( proptypes.timeRegex.test( '19:47' ) ).toEqual( true );
74
+ expect( proptypes.timeRegex.test( '05:56' ) ).toEqual( true );
75
+ expect( proptypes.timeRegex.test( '14:11' ) ).toEqual( true );
76
+ } );
77
+
78
+ it( 'should return false when not provided proper time formatted string', () => {
79
+ expect( proptypes.timeRegex.test( 'random string' ) ).toEqual( false );
80
+ expect( proptypes.timeRegex.test( '-00:00' ) ).toEqual( false );
81
+ expect( proptypes.timeRegex.test( '24:00' ) ).toEqual( false );
82
+ expect( proptypes.timeRegex.test( '00:60' ) ).toEqual( false );
83
+ expect( proptypes.timeRegex.test( '24:60' ) ).toEqual( false );
84
+ expect( proptypes.timeRegex.test( '75:93' ) ).toEqual( false );
85
+ expect( proptypes.timeRegex.test( '90:90' ) ).toEqual( false );
86
+ } );
87
+ } );
88
+
89
+ describe( 'timeFormat', () => {
90
+ it( 'should not return an error when provided proper time formatted string', () => {
91
+ const props = {
92
+ time: '15:34',
93
+ };
94
+ const timeFormat = jest.fn( () => proptypes.timeFormat( props, 'time', 'component' ) );
95
+ timeFormat();
96
+
97
+ expect( timeFormat ).toHaveReturned();
98
+ expect( timeFormat ).toHaveReturnedWith( null );
99
+ } );
100
+
101
+ it( 'should return an error when not provided a string', () => {
102
+ const props = {
103
+ time: true,
104
+ };
105
+ const timeFormat = jest.fn( () => proptypes.timeFormat( props, 'time', 'component' ) );
106
+ timeFormat();
107
+
108
+ expect( timeFormat ).toHaveReturned();
109
+ expect( timeFormat ).toHaveReturnedWith( Error( 'Invalid prop `time` of type `boolean` supplied to `component`, expected `string`.' ) );
110
+ } );
111
+
112
+ it( 'should return an error when not provided proper time format', () => {
113
+ const props = {
114
+ time: 'random string',
115
+ };
116
+ const timeFormat = jest.fn( () => proptypes.timeFormat( props, 'time', 'component' ) );
117
+ timeFormat();
118
+
119
+ expect( timeFormat ).toHaveReturned();
120
+ expect( timeFormat ).toHaveReturnedWith( Error( 'Invalid prop `time` format supplied to `component`, expected `hh:mm`.' ) );
121
+ } );
122
+ } );
123
+
124
+ describe( 'nullType', () => {
125
+ test( 'valid prop types', () => {
126
+ const props = {
127
+ name: null,
128
+ }
129
+ const format = jest.fn( () => proptypes.nullType( props, 'name', 'Test Type' ) );
130
+ format();
131
+ expect( format ).toHaveReturned();
132
+ expect( format ).toHaveReturnedWith( undefined );
133
+ } );
134
+
135
+ test( 'invalid prop types', () => {
136
+ const props = {
137
+ name: 'Modern Tribe',
138
+ }
139
+ const format = jest.fn( () => proptypes.nullType( props, 'name', 'Test Type' ) );
140
+ format();
141
+ expect( format ).toHaveReturned();
142
+ expect( format ).toHaveReturnedWith( Error( 'Invalid prop: `name` supplied to `Test Type`, expect null.') );
143
+ } );
144
+ } );
145
+ } );
common/src/modules/utils/__tests__/range.test.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import {
5
+ parseChars,
6
+ extractParts,
7
+ parser,
8
+ isFree,
9
+ } from '@moderntribe/common/utils/range';
10
+
11
+ describe( 'Tests for range.js', () => {
12
+ test( 'parseChars', () => {
13
+ expect( parseChars( '' ) ).toEqual( '' );
14
+ expect( parseChars( '12312312321321 123123123123' ) ).toEqual( '12312312321321 123123123123' );
15
+ expect( parseChars( '1"$!%$&/)=(=?^^Ǩ¨_:;' ) ).toEqual( '1' );
16
+ expect( parseChars( ',.-¨¨*^^?=)(/&%$·"!ª12' ) ).toEqual( ',.-12' );
17
+ expect( parseChars( '1-2-3-!"·$%&4-5-6$,.-' ) ).toEqual( '1-2-3-4-5-6,.-' );
18
+ } );
19
+
20
+ test( 'extractParts', () => {
21
+ expect( extractParts( '' ) ).toEqual( [] );
22
+ expect( extractParts( '12' ) ).toEqual( [ '12' ] );
23
+ expect( extractParts( '12 - 23' ) ).toEqual( [ '12', '23' ] );
24
+ expect( extractParts( '12.23 - ' ) ).toEqual( [ '12.23' ] );
25
+ expect( extractParts( '12.23 - 5,10' ) ).toEqual( [ '12.23', '5.10' ] );
26
+ expect( extractParts( '12.23 - - - - - 5,10' ) ).toEqual( [ '12.23', '5.10' ] );
27
+ expect( extractParts( '- - - - - 12.23 - 5,10' ) ).toEqual( [ '12.23', '5.10' ] );
28
+ expect( extractParts( '......,,,,12.23 - 5,10' ) ).toEqual( [ '12.23', '5.10' ] );
29
+ expect( extractParts( '.12.23 - 5,10.....,,,,' ) ).toEqual( [ '12.23', '5.10' ] );
30
+ expect( extractParts( '12.2.....3 ,-. 5,10' ) ).toEqual( [ '12.20', '5.10' ] );
31
+ expect( extractParts( '1-2-3-!"·$%&4-5-6$,.-' ) ).toEqual( [ '1', '2' ] );
32
+ expect( extractParts( '12.23 ,-. ----5,,,,,,10' ) ).toEqual( [ '12.23', '5' ] );
33
+ } );
34
+
35
+ test( 'parser', () => {
36
+ expect( parser( '' ) ).toEqual( '' );
37
+ expect( parser( 'cupidatat occaecat' ) ).toEqual( '' );
38
+ expect( parser( 'cupidatat 12 occaecat - 1,2' ) ).toEqual( '1.20 - 12' );
39
+ expect( parser( '1,2 cupidatat 12 occaecat' ) ).toEqual( '1.20' );
40
+ expect( parser( '1-2-1-1-1-1' ) ).toEqual( '1 - 2' );
41
+ expect( parser( '......,,,,12.23 - 5,10' ) ).toEqual( '5.10 - 12.23' );
42
+ expect( parser( '2.2.....3 ,-. 2,10' ) ).toEqual( '2.10 - 2.20' );
43
+ expect( parser( '12.23 ,-. ----5,,,,,,10' ) ).toEqual( '5 - 12.23' );
44
+ expect( parser( '1-2-3-!"·$%&4-5-6$,.-' ) ).toEqual( '1 - 2' );
45
+ expect( parser( ',.-¨¨*^^?=)(/&%$·"!ª12' ) ).toEqual( '12' );
46
+ expect( parser( '10 - 10' ) ).toEqual( '10' );
47
+ expect( parser( '0' ) ).toEqual( '' );
48
+ expect( parser( '0.0' ) ).toEqual( '' );
49
+ expect( parser( '0 -' ) ).toEqual( '' );
50
+ expect( parser( '0 - 0' ) ).toEqual( '' );
51
+ expect( parser( '0.0 - 0' ) ).toEqual( '' );
52
+ expect( parser( '0.0 - 0.5' ) ).toEqual( '0.00 - 0.50' );
53
+ } );
54
+
55
+ test( 'isFree', () => {
56
+ expect( isFree( '' ) ).toEqual( false );
57
+ expect( isFree( '0.12' ) ).toEqual( false );
58
+ expect( isFree( '0 - 0.12' ) ).toEqual( false );
59
+ expect( isFree( '0.12 - 0' ) ).toEqual( false );
60
+ expect( isFree( '0' ) ).toEqual( true );
61
+ expect( isFree( '0.0' ) ).toEqual( true );
62
+ expect( isFree( '0 - 0' ) ).toEqual( true );
63
+ expect( isFree( '0.0 - 0.0' ) ).toEqual( true );
64
+ } );
65
+ } );
common/src/modules/utils/__tests__/slide.test.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { checkRequestIds } from '@moderntribe/common/utils/slide';
5
+
6
+ describe( 'Tests for slide.js', () => {
7
+ it( 'should return null for up and down', () => {
8
+ const ids = checkRequestIds( 'test-id' );
9
+ expect( ids.up ).toEqual( null );
10
+ expect( ids.down ).toEqual( null );
11
+ } );
12
+ } );
common/src/modules/utils/__tests__/string.test.js ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import {
5
+ isTruthy,
6
+ isFalsy,
7
+ replaceWithObject,
8
+ getWords,
9
+ wordsAsList,
10
+ normalize,
11
+ toBlockName,
12
+ } from '@moderntribe/common/utils/string';
13
+
14
+ describe( 'Tests for string.js', () => {
15
+ test( 'isTruthy', () => {
16
+ expect( isTruthy( 'Sample string' ) ).toEqual( false );
17
+ expect( isTruthy( '0' ) ).toEqual( false );
18
+ expect( isTruthy( 'false' ) ).toEqual( false );
19
+ expect( isTruthy( '1' ) ).toEqual( true );
20
+ expect( isTruthy( 'yes' ) ).toEqual( true );
21
+ expect( isTruthy( 'true' ) ).toEqual( true );
22
+ } );
23
+
24
+ test( 'isFalsy', () => {
25
+ expect( isFalsy( 'Sample string' ) ).toEqual( false );
26
+ expect( isFalsy( '1' ) ).toEqual( false );
27
+ expect( isFalsy( 'true' ) ).toEqual( false );
28
+ expect( isFalsy( '' ) ).toEqual( true );
29
+ expect( isFalsy( '0' ) ).toEqual( true );
30
+ expect( isFalsy( 'no' ) ).toEqual( true );
31
+ expect( isFalsy( 'false' ) ).toEqual( true );
32
+ } );
33
+
34
+ test( 'replaceWithObject', () => {
35
+ expect( replaceWithObject() ).toEqual( '' );
36
+ expect( replaceWithObject( '', {} ) ).toEqual( '' );
37
+ expect( replaceWithObject( 'abcd' ) ).toEqual( 'abcd' );
38
+ expect( replaceWithObject( 'abcd', { z: 'a' } ) ).toEqual( 'abcd' );
39
+ expect( replaceWithObject( 'abcd', { a: 'b', c: 'd' } ) ).toEqual( 'bbdd' );
40
+ expect( replaceWithObject( 'abcd', { a: '', c: '' } ) ).toEqual( 'bd' );
41
+ } );
42
+
43
+ describe( 'getWords', () => {
44
+ test( 'when strings are formed correctly', () => {
45
+ expect( getWords( 'Modern Tribe' ) ).toEqual( [ 'Modern', 'Tribe' ] );
46
+ expect( getWords( 'The Next Generation of Digital Agency' ) )
47
+ .toEqual( [ 'The', 'Next', 'Generation', 'of', 'Digital', 'Agency' ] );
48
+ expect( getWords( 'A list with numbers: 1, 2, 3' ) )
49
+ .toEqual( [ 'A', 'list', 'with', 'numbers:', '1,', '2,', '3' ] );
50
+ } );
51
+
52
+ test( 'Words with multiple spaces on it', () => {
53
+ expect( getWords( ' Modern Tribe ' ) ).toEqual( [ 'Modern', 'Tribe' ] );
54
+ } );
55
+ } );
56
+
57
+ describe( 'applySeparatorsAsCheckboxList', () => {
58
+ test( 'Single word no separator is applied', () => {
59
+ expect( wordsAsList( [ 'Modern' ] ) ).toEqual( 'Modern' );
60
+ } );
61
+
62
+ test( 'Two words last separator is applied', () => {
63
+ expect( wordsAsList( getWords( 'Modern Tribe' ) ) ).toEqual( 'Modern & Tribe' );
64
+ expect( wordsAsList( getWords( 'Events Calendar' ), ',', ' - ' ) )
65
+ .toEqual( 'Events - Calendar' );
66
+ } );
67
+
68
+ test( 'A large number of words', () => {
69
+ expect(
70
+ wordsAsList( [ 'Dog', 'Cat', 'Hamster', 'Parrot', 'Spider', 'Goldfish' ] ),
71
+ ).toEqual( 'Dog, Cat, Hamster, Parrot, Spider & Goldfish' );
72
+ } );
73
+
74
+ test( 'Custom separators', () => {
75
+ expect(
76
+ wordsAsList( [ 'Dog', 'Cat', 'Hamster', 'Parrot', 'Spider', 'Goldfish' ], ' - ', ' => ' ),
77
+ ).toEqual( 'Dog - Cat - Hamster - Parrot - Spider => Goldfish' );
78
+ } );
79
+ } );
80
+
81
+ describe( 'normalize', () => {
82
+ test( 'single words', () => {
83
+ expect( normalize( 'modern' ) ).toEqual( 'modern' );
84
+ expect( normalize( 'TRIBE' ) ).toEqual( 'tribe' );
85
+ } );
86
+
87
+ test( 'multiple words', () => {
88
+ expect( normalize( 'Modern Tribe' ) ).toEqual( 'modern-tribe' );
89
+ expect( normalize( 'https://theeventscalendar.com/' ) )
90
+ .toEqual( 'httpstheeventscalendarcom' );
91
+ } );
92
+
93
+ test( 'Multiple spaces', () => {
94
+ expect( normalize( ' modern TriBe' ) ).toEqual( 'modern-tribe' );
95
+ } );
96
+
97
+ test( 'non words', () => {
98
+ expect( normalize( ' 12312321-,-.(()=^^ ¨¨:;:_¨¨Ç *¿?=)(/&%$·"!.+' ) ).toEqual( '' );
99
+ } );
100
+
101
+ test( 'non strings types', () => {
102
+ expect( normalize( undefined ) ).toBe( '' );
103
+ expect( normalize( [] ) ).toBe( '' );
104
+ expect( normalize( [] ) ).toBe( '' );
105
+ expect( normalize( null ) ).toBe( '' );
106
+ expect( normalize( 1 ) ).toBe( '' );
107
+ } );
108
+ } );
109
+
110
+ describe( 'toBlockName', () => {
111
+ test( 'words', () => {
112
+ expect( toBlockName( 'modern tribe' ) )
113
+ .toBe( 'moderntribe' );
114
+ expect( toBlockName( 'https://theeventscalendar.com/' ) )
115
+ .toBe( 'httpstheeventscalendarcom' );
116
+ } );
117
+
118
+ test( 'non valid characters of a block', () => {
119
+ expect( toBlockName( '_ecp_custom_2' ) ).toBe( 'ecpcustom2' );
120
+ expect( toBlockName( 'ecp-custom-2' ) ).toBe( 'ecp-custom-2' );
121
+ expect( toBlockName( '„…–~~}][‚|#¢∞ecp-custom-2;:_¨¨Ç¨^^=)(/&%$·"!' ) )
122
+ .toBe( 'ecp-custom-2' );
123
+ expect( toBlockName( '„…– ~~}] [‚|#¢∞ecp-custom-2;:_¨ ¨Ç¨^^=)(/ &%$·"!' ) )
124
+ .toBe( 'ecp-custom-2' );
125
+ } );
126
+
127
+ test( 'non strings types', () => {
128
+ expect( toBlockName( undefined ) ).toBe( '' );
129
+ expect( toBlockName( [] ) ).toBe( '' );
130
+ expect( toBlockName( [] ) ).toBe( '' );
131
+ expect( toBlockName( null ) ).toBe( '' );
132
+ expect( toBlockName( 1 ) ).toBe( '' );
133
+ } );
134
+ } );
135
+ } );
common/src/modules/utils/__tests__/time.test.js ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { time } from '@moderntribe/common/utils';
5
+ import { roundTime } from '../moment';
6
+
7
+ describe( 'Tests for time.js', () => {
8
+ test( 'MINUTE_IN_SECONDS', () => {
9
+ expect( time.MINUTE_IN_SECONDS ).toEqual( 60 );
10
+ } );
11
+
12
+ test( 'HALF_HOUR_IN_SECONDS', () => {
13
+ expect( time.HALF_HOUR_IN_SECONDS ).toEqual( 1800 );
14
+ } );
15
+
16
+ test( 'HOUR_IN_SECONDS', () => {
17
+ expect( time.HOUR_IN_SECONDS ).toEqual( 3600 );
18
+ } );
19
+
20
+ test( 'DAY_IN_SECONDS', () => {
21
+ expect( time.DAY_IN_SECONDS ).toEqual( 86400 );
22
+ } );
23
+
24
+ test( 'roundTime', () => {
25
+ expect( time.roundTime( '01:23:54.423', time.TIME_FORMAT_HH_MM_SS_SSS ) )
26
+ .toEqual( '01:00:00.000' );
27
+ expect( time.roundTime( '14:46:13.042', time.TIME_FORMAT_HH_MM_SS_SSS ) )
28
+ .toEqual( '14:30:00.000' );
29
+ expect( time.roundTime( '01:23:54', time.TIME_FORMAT_HH_MM_SS ) )
30
+ .toEqual( '01:00:00' );
31
+ expect( time.roundTime( '14:46:13', time.TIME_FORMAT_HH_MM_SS ) )
32
+ .toEqual( '14:30:00' );
33
+ expect( time.roundTime( '01:23', time.TIME_FORMAT_HH_MM ) )
34
+ .toEqual( '01:00' );
35
+ expect( time.roundTime( '14:46', time.TIME_FORMAT_HH_MM ) )
36
+ .toEqual( '14:30' );
37
+ expect( time.roundTime( '23:54.423', time.TIME_FORMAT_MM_SS_SSS ) )
38
+ .toEqual( '00:00.000' );
39
+ expect( time.roundTime( '46:13.042', time.TIME_FORMAT_MM_SS_SSS ) )
40
+ .toEqual( '30:00.000' );
41
+ expect( time.roundTime( '23:54', time.TIME_FORMAT_MM_SS ) )
42
+ .toEqual( '00:00' );
43
+ expect( time.roundTime( '46:13', time.TIME_FORMAT_MM_SS ) )
44
+ .toEqual( '30:00' );
45
+ } );
46
+
47
+ test( 'START_OF_DAY', () => {
48
+ expect( time.START_OF_DAY ).toEqual( '00:00' );
49
+ } );
50
+
51
+ test( 'END_OF_DAY', () => {
52
+ expect( time.END_OF_DAY ).toEqual( '23:59' );
53
+ } );
54
+
55
+ test( 'TIME_FORMAT_HH_MM_SS_SSS', () => {
56
+ expect( time.TIME_FORMAT_HH_MM_SS_SSS ).toEqual( 'hh:mm:ss.sss' );
57
+ } );
58
+
59
+ test( 'TIME_FORMAT_HH_MM_SS', () => {
60
+ expect( time.TIME_FORMAT_HH_MM_SS ).toEqual( 'hh:mm:ss' );
61
+ } );
62
+
63
+ test( 'TIME_FORMAT_HH_MM', () => {
64
+ expect( time.TIME_FORMAT_HH_MM ).toEqual( 'hh:mm' );
65
+ } );
66
+
67
+ test( 'TIME_FORMAT_MM_SS_SSS', () => {
68
+ expect( time.TIME_FORMAT_MM_SS_SSS ).toEqual( 'mm:ss.sss' );
69
+ } );
70
+
71
+ test( 'TIME_FORMAT_MM_SS', () => {
72
+ expect( time.TIME_FORMAT_MM_SS ).toEqual( 'mm:ss' );
73
+ } );
74
+
75
+ test( 'HOUR_IN_MS', () => {
76
+ expect( time.HOUR_IN_MS ).toEqual( 3600000 );
77
+ } );
78
+
79
+ test( 'MINUTE_IN_MS', () => {
80
+ expect( time.MINUTE_IN_MS ).toEqual( 60000 );
81
+ } );
82
+
83
+ test( 'SECOND_IN_MS', () => {
84
+ expect( time.SECOND_IN_MS ).toEqual( 1000 );
85
+ } );
86
+
87
+ /**
88
+ * Below are tests copied from the hh-mm-ss library and adjusted to use
89
+ * Jest instead of Tape for testing.
90
+ * Link: https://github.com/Goldob/hh-mm-ss/blob/master/test/index.js
91
+ */
92
+ test( 'fromMilliseconds() test', () => {
93
+ // Basic functionality
94
+ expect( time.fromMilliseconds( 75000 ) ).toEqual( '01:15' );
95
+ expect( time.fromMilliseconds( 442800000 ) ).toEqual( '123:00:00' );
96
+ expect( time.fromMilliseconds( 90576 ) ).toEqual( '01:30.576' );
97
+ expect( time.fromMilliseconds( -157250 ) ).toEqual( '-02:37.250' );
98
+
99
+ // Output formatting
100
+ expect( time.fromMilliseconds( 38000, 'mm:ss.sss' ) ).toEqual( '00:38.000' );
101
+ expect( time.fromMilliseconds( 0, 'hh:mm:ss' ) ).toEqual( '00:00:00' );
102
+ expect( time.fromMilliseconds( 3600000, 'mm:ss' ) ).toEqual( '01:00:00' );
103
+ expect( time.fromMilliseconds( 4500000, 'hh:mm' ) ).toEqual( '01:15' );
104
+ expect( time.fromMilliseconds( -9900000, 'hh:mm' ) ).toEqual( '-02:45' );
105
+
106
+ // Input validation
107
+ expect( () => time.fromMilliseconds( null ) ).toThrowErrorMatchingSnapshot();
108
+ expect( () => time.fromMilliseconds('text') ).toThrowErrorMatchingSnapshot();
109
+ expect( () => time.fromMilliseconds(0, 'mm:hh:ss') ).toThrowErrorMatchingSnapshot();
110
+ } );
111
+
112
+ test( 'fromSeconds() test', () => {
113
+ // Basic functionality
114
+ expect( time.fromSeconds( 75 ) ).toEqual( '01:15' );
115
+ expect( time.fromSeconds( 442800 ) ).toEqual( '123:00:00' );
116
+ expect( time.fromSeconds( -442800 ) ).toEqual( '-123:00:00' );
117
+
118
+ // Output formatting
119
+ expect( time.fromSeconds( 38, 'mm:ss.sss' ) ).toEqual( '00:38.000' );
120
+ expect( time.fromSeconds( 0, 'hh:mm:ss' ) ).toEqual( '00:00:00' );
121
+ expect( time.fromSeconds( 3600, 'mm:ss' ) ).toEqual( '01:00:00' );
122
+ expect( time.fromSeconds( 4500, 'hh:mm' ) ).toEqual( '01:15' );
123
+ expect( time.fromSeconds( -9900, 'hh:mm' ) ).toEqual( '-02:45' );
124
+
125
+ // Input validation
126
+ expect( () => time.fromSeconds( null ) ).toThrowErrorMatchingSnapshot();
127
+ expect( () => time.fromSeconds( 'text' ) ).toThrowErrorMatchingSnapshot();
128
+ expect( () => time.fromSeconds( 0, 'mm:hh:ss' ) ).toThrowErrorMatchingSnapshot();
129
+ } );
130
+
131
+ test( 'toMilliseconds() test', () => {
132
+ // Basic functionality
133
+ expect( time.toMilliseconds( '01:05:17' ) ).toEqual( 3917000 );
134
+ expect( time.toMilliseconds( '137:00:00.0' ) ).toEqual( 493200000 );
135
+ expect( time.toMilliseconds( '00:10.230' ) ).toEqual( 10230 );
136
+ expect( time.toMilliseconds( '00:00:07.10845' ) ).toEqual( 7108 );
137
+ expect( time.toMilliseconds( '-02:07:12' ) ).toEqual( -7632000 );
138
+ expect( time.toMilliseconds( '02:00' ) ).toEqual( 120000 );
139
+ expect( time.toMilliseconds( '02:00', 'hh:mm' ) ).toEqual( 7200000 );
140
+ expect( time.toMilliseconds( '-04:35', 'hh:mm' ) ).toEqual( -16500000 );
141
+ expect( time.toMilliseconds( '00:00:07.10845', 'hh:mm' ) ).toEqual( 7108 );
142
+
143
+ // Input validation
144
+ expect( () => time.toMilliseconds( '13:05:02:11' ) ).toThrowErrorMatchingSnapshot();
145
+ expect( () => time.toMilliseconds( '153' ) ).toThrowErrorMatchingSnapshot();
146
+ expect( () => time.toMilliseconds( null ) ).toThrowErrorMatchingSnapshot();
147
+ expect( () => time.toMilliseconds( '00:62' ) ).toThrowErrorMatchingSnapshot();
148
+ expect( () => time.toMilliseconds( '01:30', 'mm:hh:ss' ) ).toThrowErrorMatchingSnapshot();
149
+ } );
150
+
151
+ test( 'toSeconds() test', () => {
152
+ // Basic functionality
153
+ expect( time.toSeconds( '01:05:17' ) ).toEqual( 3917 );
154
+ expect( time.toSeconds( '137:00:00.0' ) ).toEqual( 493200 );
155
+ expect( time.toSeconds( '00:10.230' ) ).toEqual( 10 );
156
+ expect( time.toSeconds( '00:00:07.10845' ) ).toEqual( 7 );
157
+ expect( time.toSeconds( '-02:07:12' ) ).toEqual( -7632 );
158
+ expect( time.toSeconds( '02:00' ) ).toEqual( 120 );
159
+ expect( time.toSeconds( '02:00', 'hh:mm' ) ).toEqual( 7200 );
160
+ expect( time.toSeconds( '-04:35', 'hh:mm' ) ).toEqual( -16500 );
161
+ expect( time.toSeconds( '00:00:07.10845', 'hh:mm' ) ).toEqual( 7 );
162
+
163
+ // Input validation
164
+ expect( () => time.toSeconds( '13:05:02:11' ) ).toThrowErrorMatchingSnapshot();
165
+ expect( () => time.toSeconds( '153' ) ).toThrowErrorMatchingSnapshot();
166
+ expect( () => time.toSeconds( null ) ).toThrowErrorMatchingSnapshot();
167
+ expect( () => time.toSeconds( '00:62' ) ).toThrowErrorMatchingSnapshot();
168
+ expect( () => time.toSeconds( '01:30', 'mm:hh:ss' ) ).toThrowErrorMatchingSnapshot();
169
+ } );
170
+
171
+ test( 'symmetrical conversion test', () => {
172
+ /*
173
+ * fromMilliseconds() and toMilliseconds() for all formats
174
+ */
175
+
176
+ // 90000ms = 1m 30s
177
+ expect( time.toMilliseconds( time.fromMilliseconds( 90000, 'mm:ss' ), 'mm:ss' ) ).toEqual( 90000 );
178
+ expect( time.toMilliseconds( time.fromMilliseconds( 90000, 'mm:ss.sss' ), 'mm:ss.sss' ) ).toEqual( 90000 );
179
+ expect( time.toMilliseconds( time.fromMilliseconds( 90000, 'hh:mm' ), 'hh:mm' ) ).toEqual( 90000 );
180
+ expect( time.toMilliseconds( time.fromMilliseconds( 90000, 'hh:mm:ss' ), 'hh:mm:ss' ) ).toEqual( 90000 );
181
+ expect( time.toMilliseconds( time.fromMilliseconds( 90000, 'hh:mm:ss.sss' ), 'hh:mm:ss.sss' ) ).toEqual( 90000 );
182
+
183
+ // 7517245ms = 2h 5m 17.245s
184
+ expect( time.toMilliseconds( time.fromMilliseconds( 7517245, 'mm:ss' ), 'mm:ss' ) ).toEqual( 7517245 );
185
+ expect( time.toMilliseconds( time.fromMilliseconds( 7517245, 'mm:ss.sss' ), 'mm:ss.sss' ) ).toEqual( 7517245 );
186
+ expect( time.toMilliseconds( time.fromMilliseconds( 7517245, 'hh:mm' ), 'hh:mm' ) ).toEqual( 7517245 );
187
+ expect( time.toMilliseconds( time.fromMilliseconds( 7517245, 'hh:mm:ss' ), 'hh:mm:ss' ) ).toEqual( 7517245 );
188
+ expect( time.toMilliseconds( time.fromMilliseconds( 7517245, 'hh:mm:ss.sss' ), 'hh:mm:ss.sss' ) ).toEqual( 7517245 );
189
+
190
+ // -10800000ms = -3h
191
+ expect( time.toMilliseconds( time.fromMilliseconds( -10800000, 'mm:ss' ), 'mm:ss' ) ).toEqual( -10800000 );
192
+ expect( time.toMilliseconds( time.fromMilliseconds( -10800000, 'mm:ss.sss' ), 'mm:ss.sss' ) ).toEqual( -10800000 );
193
+ expect( time.toMilliseconds( time.fromMilliseconds( -10800000, 'hh:mm' ), 'hh:mm' ) ).toEqual( -10800000 );
194
+ expect( time.toMilliseconds( time.fromMilliseconds( -10800000, 'hh:mm:ss' ), 'hh:mm:ss' ) ).toEqual( -10800000 );
195
+ expect( time.toMilliseconds( time.fromMilliseconds( -10800000, 'hh:mm:ss.sss' ), 'hh:mm:ss.sss' ) ).toEqual( -10800000 );
196
+
197
+ /*
198
+ * fromSeconds() and toMilliseconds() for all formats
199
+ */
200
+
201
+ // 930s = 15m 30s
202
+ expect( time.toSeconds( time.fromSeconds( 930, 'mm:ss' ), 'mm:ss') ).toEqual( 930 );
203
+ expect( time.toSeconds( time.fromSeconds( 930, 'mm:ss.sss' ), 'mm:ss.sss') ).toEqual( 930 );
204
+ expect( time.toSeconds( time.fromSeconds( 930, 'hh:mm' ), 'hh:mm') ).toEqual( 930 );
205
+ expect( time.toSeconds( time.fromSeconds( 930, 'hh:mm:ss' ), 'hh:mm:ss') ).toEqual( 930 );
206
+ expect( time.toSeconds( time.fromSeconds( 930, 'hh:mm:ss.sss' ), 'hh:mm:ss.sss') ).toEqual( 930 );
207
+
208
+ // 4850s = 1h 20m 50s
209
+ expect( time.toSeconds( time.fromSeconds( 4850, 'mm:ss' ), 'mm:ss') ).toEqual( 4850 );
210
+ expect( time.toSeconds( time.fromSeconds( 4850, 'mm:ss.sss' ), 'mm:ss.sss') ).toEqual( 4850 );
211
+ expect( time.toSeconds( time.fromSeconds( 4850, 'hh:mm' ), 'hh:mm') ).toEqual( 4850 );
212
+ expect( time.toSeconds( time.fromSeconds( 4850, 'hh:mm:ss' ), 'hh:mm:ss') ).toEqual( 4850 );
213
+ expect( time.toSeconds( time.fromSeconds( 4850, 'hh:mm:ss.sss' ), 'hh:mm:ss.sss') ).toEqual( 4850 );
214
+
215
+ // -300s = -5m
216
+ expect( time.toSeconds( time.fromSeconds( -300, 'mm:ss' ), 'mm:ss') ).toEqual( -300 );
217
+ expect( time.toSeconds( time.fromSeconds( -300, 'mm:ss.sss' ), 'mm:ss.sss') ).toEqual( -300 );
218
+ expect( time.toSeconds( time.fromSeconds( -300, 'hh:mm' ), 'hh:mm') ).toEqual( -300 );
219
+ expect( time.toSeconds( time.fromSeconds( -300, 'hh:mm:ss' ), 'hh:mm:ss') ).toEqual( -300 );
220
+ expect( time.toSeconds( time.fromSeconds( -300, 'hh:mm:ss.sss' ), 'hh:mm:ss.sss') ).toEqual( -300 );
221
+ } );
222
+ } );
common/src/modules/utils/api.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { rest } from '@moderntribe/common/utils/globals';
2
+ import 'whatwg-fetch';
3
+
4
+ /**
5
+ * Send a request into a wp-json endpoint
6
+ *
7
+ * @param {Object} params An object with the following properties:
8
+ * - path: Path for the endpoint
9
+ * - headers: Array of extra headers for the request
10
+ * - initParams: Params send into the fetch along with headers and credentials
11
+ * - namespace: Endpoint namespace default to `wp/v2`
12
+ *
13
+ * @returns {Promise<Response>} return a fetch promise
14
+ */
15
+ export const wpREST = async ( params ) => {
16
+ const { url = '', nonce = {}, namespaces = {} } = rest();
17
+
18
+ /**
19
+ * @todo refactor this method as for more details look into:
20
+ * - https://github.com/moderntribe/events-gutenberg/pull/346#discussion_r222217138
21
+ */
22
+ const options = {
23
+ path: '',
24
+ headers: {},
25
+ initParams: {},
26
+ namespace: namespaces.core || 'wp/v2',
27
+ ...params,
28
+ };
29
+
30
+ const endpoint = `${ url }${ options.namespace }/${ options.path }`;
31
+
32
+ const headers = {
33
+ 'X-WP-Nonce': nonce.wp_rest || '',
34
+ ...options.headers,
35
+ };
36
+
37
+ try {
38
+ const response = await fetch( endpoint, {
39
+ ...options.initParams,
40
+ credentials: 'include',
41
+ headers,
42
+ } );
43
+
44
+ let data = {};
45
+
46
+ if ( response.ok ) {
47
+ data = await response.json();
48
+ }
49
+
50
+ return {
51
+ response,
52
+ data,
53
+ };
54
+ } catch ( e ) {
55
+ throw e;
56
+ }
57
+ };
common/src/modules/utils/date.js ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { identity } from 'lodash';
5
+ import chrono from 'chrono-node';
6
+
7
+ /**
8
+ * Wordpress dependencies
9
+ */
10
+ import { __ } from '@wordpress/i18n';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import {
16
+ moment as momentUtil,
17
+ timezone as timezoneUtil,
18
+ } from '@moderntribe/common/utils';
19
+ import { dateSettings } from '@moderntribe/common/utils/globals';
20
+
21
+ const formats = dateSettings() && dateSettings().formats ? dateSettings().formats : {};
22
+ const timezone = dateSettings() && dateSettings().formats ? dateSettings().formats : {};
23
+
24
+ export const FORMATS = {
25
+ TIME: 'HH:mm:ss',
26
+ DATE_TIME: 'YYYY-MM-DD HH:mm:ss',
27
+ WP: {
28
+ time: 'g:i a',
29
+ time24Hr: 'H:i',
30
+ date: 'F j, Y',
31
+ datetime: 'F j, Y g:i a',
32
+ dateNoYear: 'F j',
33
+ ...formats,
34
+ },
35
+ TIMEZONE: {
36
+ string: 'UTC',
37
+ ...timezone,
38
+ },
39
+ DATABASE: {
40
+ date: 'Y-m-d',
41
+ datetime: 'Y-m-d H:i:s',
42
+ time: 'H:i:s',
43
+ },
44
+ };
45
+
46
+ export const TODAY = new Date();
47
+
48
+ export const timezonesAsSelectData = () => {
49
+ return timezones().map( ( tzone ) => ( {
50
+ value: tzone.key,
51
+ label: tzone.text,
52
+ } ) );
53
+ };
54
+
55
+ export const timezones = () => {
56
+ return timezoneUtil.getItems()
57
+ .map( ( group ) => group.options || [] )
58
+ .reduce( ( prev, current ) => [ ...prev, ...current ], [] );
59
+ };
60
+
61
+ export const toNaturalLanguage = ( params = {} ) => {
62
+ const options = {
63
+ date: null,
64
+ format: {
65
+ month: 'MMMM',
66
+ day: 'D',
67
+ year: 'YYYY',
68
+ time: 'h:mm a',
69
+ },
70
+ separator: '',
71
+ ...params,
72
+ };
73
+
74
+ const parsed = {
75
+ text: '',
76
+ moment: options.date && momentUtil.toMoment( options.date ),
77
+ detail: {
78
+ day: '',
79
+ month: '',
80
+ year: '',
81
+ time: '',
82
+ },
83
+ isValid: false,
84
+ };
85
+
86
+ parsed.isValid = Boolean( parsed.moment && parsed.moment.isValid() );
87
+
88
+ if ( parsed.isValid ) {
89
+ parsed.detail = {
90
+ month: `${ parsed.moment.format( options.format.month ) }`,
91
+ day: `${ parsed.moment.format( options.format.day ) }`,
92
+ year: `${ parsed.moment.format( options.format.year ) }`,
93
+ time: `${ parsed.moment.format( options.format.time ) }`,
94
+ };
95
+ const { detail } = parsed;
96
+ parsed.text = `${ detail.month } ${ detail.day } ${ detail.year } ${ options.separator } ${ detail.time }`;
97
+ }
98
+ return parsed;
99
+ };
100
+
101
+ export const rangeToNaturalLanguage = ( start = '', end = '', separators = {} ) => {
102
+ const separatorOptions = {
103
+ time: __( 'at', 'events-gutenberg' ),
104
+ date: ' - ',
105
+ ...separators,
106
+ };
107
+ const from = toNaturalLanguage( { date: start, separator: separatorOptions.time } );
108
+ const to = toNaturalLanguage( { date: end, separator: separatorOptions.time } );
109
+ const parts = [ from.text ];
110
+
111
+ if ( from.isValid && to.isValid ) {
112
+ if ( momentUtil.isSameDay( from.moment, to.moment ) ) {
113
+ /**
114
+ * If both dates are happening on the same day the only relevant thing is the time on the second
115
+ * part of the string (to keep string cleaner).
116
+ *
117
+ * - Current behavior 'Oct 8 2018 at 12:00 pm - Oct 8 2018 at 12:30 pm'
118
+ * - New behavior: 'Oct 8 2018 at 12:00 pm - 12:30 pm'
119
+ */
120
+ parts.push( to.detail.time );
121
+ } else if ( momentUtil.isSameMonth( from.moment, to.moment ) ) {
122
+ /**
123
+ * If both dates are happening on the same month and not on the same day but during the same year
124
+ * we don't need to show the same year twice.
125
+ *
126
+ * - Current Behavior: 'Oct 8 2018 at 12:00 pm - Oct 24 2018 12:30 pm'
127
+ * - New Behavior: 'Oct 8 2018 at 12:00 pm - Oct 24 12:30 pm'
128
+ */
129
+ parts.push( `${ to.detail.month } ${ to.detail.day } ${ separatorOptions.time } ${ to.detail.time }` );
130
+ } else {
131
+ // Otherwise just use the full text
132
+ parts.push( to.text );
133
+ }
134
+ }
135
+
136
+ return parts.filter( identity ).join( separatorOptions.date );
137
+ };
138
+
139
+ export const labelToDate = ( label ) => {
140
+ const [ parsed ] = chrono.parse( label );
141
+ const dates = {
142
+ start: null,
143
+ end: null,
144
+ };
145
+ if ( parsed ) {
146
+ const { start, end } = parsed;
147
+ dates.start = start ? momentUtil.toDateTime( momentUtil.toMoment( start.date() ) ) : null;
148
+ dates.end = end ? momentUtil.toDateTime( momentUtil.toMoment( end.date() ) ) : null;
149
+ }
150
+ return dates;
151
+ };
common/src/modules/utils/dom.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { noop } from 'lodash';
5
+
6
+ /**
7
+ * Test if a node element has a class present on it
8
+ *
9
+ * @param {HTMLElement|Element} node The node where to look for the class names
10
+ * @param {array} classNames List of class names as an array of strings
11
+ * @returns {boolean} `true` if has any of the classes or false if does not have any
12
+ */
13
+ export const hasClass = ( node, classNames = [] ) => {
14
+ for ( let i = 0; i < classNames.length; i++ ) {
15
+ if ( node.classList.contains( classNames[ i ] ) ) {
16
+ return true;
17
+ }
18
+ }
19
+ return false;
20
+ };
21
+
22
+ /**
23
+ * Utility to search the parent of a node looking from the current node Up to the highest
24
+ * node on the DOM Tree
25
+ *
26
+ * @param {(DOMElement|object)} node - The DOM node where the search starts
27
+ * @param {function} callback - Is executed on every iteration, it should return a boolean
28
+ * @returns {boolean} Returns tre if the callback returns true with any of the parents.
29
+ */
30
+ export const searchParent = ( node = {}, callback = noop ) => {
31
+ let found = false;
32
+ let testNode = node;
33
+ do {
34
+ if ( testNode ) {
35
+ found = callback( testNode );
36
+ }
37
+ const nextNode = testNode && testNode.parentNode ? testNode.parentNode : null;
38
+ testNode = isRootNode( nextNode ) ? null : nextNode;
39
+ } while ( ! found && testNode !== null );
40
+
41
+ return found;
42
+ };
43
+
44
+ /**
45
+ * Test if a node is the same as the root element or the base node of the document.
46
+ *
47
+ * @param {Element} node A Document Node
48
+ * @returns {boolean} true if node is the root Node Document
49
+ */
50
+ export const isRootNode = ( node ) => node === window.top.document;
common/src/modules/utils/get-hidden-height.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @function getHiddenHeight
3
+ * @desc gets the height of hidden objects.
4
+ */
5
+
6
+ const getHiddenHeight = ( el ) => {
7
+ const width = el.clientWidth;
8
+ const element = el;
9
+
10
+ element.style.visibility = 'hidden';
11
+ element.style.height = 'auto';
12
+ element.style.maxHeight = 'none';
13
+ element.style.position = 'fixed';
14
+ element.style.width = `${width}px`;
15
+
16
+ const tHeight = element.offsetHeight;
17
+
18
+ element.style.visibility = '';
19
+ element.style.height = '';
20
+ element.style.maxHeight = '';
21
+ element.style.width = '';
22
+ element.style.position = '';
23
+ element.style.zIndex = '';
24
+
25
+ return tHeight;
26
+ };
27
+
28
+ export default getHiddenHeight;
common/src/modules/utils/globals.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @todo: handle globals in a better way
3
+ */
4
+ export const get = ( key, defaultValue ) => window[ key ] || defaultValue;
5
+ export const google = () => get( 'google' );
6
+ // Localized Config
7
+ export const config = () => get( 'tribe_editor_config', {} );
8
+ // Common
9
+ export const common = () => config().common || {};
10
+ export const adminUrl = () => common().adminUrl || '';
11
+ export const rest = () => common().rest || {};
12
+ export const restNonce = () => rest().nonce || {};
13
+ export const dateSettings = () => common().dateSettings || {};
14
+ export const editorConstants = () => common().constants || {};
15
+ export const list = () => ( {
16
+ countries: common().countries || {},
17
+ us_states: common().usStates || {},
18
+ } );
19
+
20
+ // TEC
21
+ export const tec = () => config().events || {};
22
+ export const editor = () => tec().editor || {};
23
+ export const settings = () => tec().settings || {};
24
+ export const mapsAPI = () => tec().googleMap || {};
25
+ export const priceSettings = () => tec().priceSettings || {};
26
+ export const timezoneHtml = () => tec().timezoneHTML || '';
27
+ // PRO
28
+ export const pro = () => config().eventsPRO || {};
29
+ export const editorDefaults = () => pro().defaults || {};
30
+ // Tickets
31
+ export const tickets = () => config().tickets || {};
common/src/modules/utils/index.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import * as date from './date';
2
+ import * as dom from './dom';
3
+ import * as globals from './globals';
4
+ import * as input from './input';
5
+ import * as moment from './moment';
6
+ import * as range from './range';
7
+ import * as slide from './slide';
8
+ import * as string from './string';
9
+ import * as time from './time';
10
+ import * as timezone from './timezone';
11
+ import * as number from './number';
12
+ import * as api from './api';
13
+
14
+ export { date };
15
+ export { dom };
16
+ export { default as getHiddenHeight } from './get-hidden-height';
17
+ export { globals };
18
+ export { input };
19
+ export { moment };
20
+ export { range };
21
+ export { slide };
22
+ export { string };
23
+ export { time };
24
+ export { timezone };
25
+ export { number };
26
+ export { api };
27
+ export { default as TribePropTypes } from './proptypes';
common/src/modules/utils/input.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Allow to set a function (callback) as the parameter of onChange which will send the value of the
3
+ * event into the callback to avoid arrow functions around props of components.
4
+ *
5
+ * @param {Function} callback executed once the event is fired.
6
+ * @return {Function} Function executed by the event to extract the value
7
+ */
8
+ export const sendValue = ( callback ) => ( event ) => {
9
+ const { target = {} } = event;
10
+ const { value = '' } = target;
11
+ callback( value );
12
+ };
common/src/modules/utils/moment.js ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { isString } from 'lodash';
5
+ import moment from 'moment/moment';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import {
11
+ date as dateUtil,
12
+ time,
13
+ string,
14
+ } from '@moderntribe/common/utils';
15
+
16
+ /**
17
+ * Make sure the format provided matches the spec used by moment.js
18
+ *
19
+ * @param {string} format The format to be converted to a moment format
20
+ * @returns {string} return a moment.js valid format
21
+ */
22
+ export const toFormat = ( format ) => {
23
+ const replacements = {
24
+ d: 'DD',
25
+ D: 'ddd',
26
+ j: 'D',
27
+ l: 'dddd',
28
+ N: 'E',
29
+ S: 'o',
30
+ w: 'e',
31
+ z: 'DDD',
32
+ W: 'W',
33
+ F: 'MMMM',
34
+ m: 'MM',
35
+ M: 'MMM',
36
+ n: 'M',
37
+ t: '', // no equivalent
38
+ L: '', // no equivalent
39
+ o: 'YYYY',
40
+ Y: 'YYYY',
41
+ y: 'YY',
42
+ a: 'a',
43
+ A: 'A',
44
+ B: '', // no equivalent
45
+ g: 'h',
46
+ G: 'H',
47
+ h: 'hh',
48
+ H: 'HH',
49
+ i: 'mm',
50
+ s: 'ss',
51
+ u: 'SSS',
52
+ e: 'zz', // deprecated since version 1.6.0 of moment.js
53
+ I: '', // no equivalent
54
+ O: '', // no equivalent
55
+ P: '', // no equivalent
56
+ T: '', // no equivalent
57
+ Z: '', // no equivalent
58
+ c: '', // no equivalent
59
+ r: '', // no equivalent
60
+ U: 'X',
61
+ };
62
+
63
+ return string.replaceWithObject( format, replacements );
64
+ };
65
+
66
+ /**
67
+ * Round the time of a moment object if the minutes on the date is lower than 30 will set to 0 if
68
+ * is greater will se 30 so is either 30 or 0.
69
+ *
70
+ * @param {moment} date Make sure the date is rounded between 0 or 30 minutes
71
+ * @returns {moment} A moment object
72
+ */
73
+ export const roundTime = ( date ) => {
74
+ if ( ! ( date instanceof moment ) ) {
75
+ return date;
76
+ }
77
+
78
+ let minutes = date.minute();
79
+ if ( minutes >= 30 ) {
80
+ minutes = ( minutes % 30 );
81
+ }
82
+
83
+ return date
84
+ .clone()
85
+ .subtract( minutes, 'm' )
86
+ .seconds( 0 );
87
+ };
88
+
89
+ /**
90
+ * Parse multiple formats in a date to ensure the generated dates are valid
91
+ *
92
+ * @param {string} date The date to be converted
93
+ * @param {array} formats The list of formats used to format
94
+ * @returns {moment} moment Object with the date or current date if is non valid
95
+ */
96
+ export const parseFormats = ( date, formats = [ dateUtil.FORMATS.DATABASE.datetime, dateUtil.FORMATS.WP.datetime ] ) => {
97
+ for ( let i = 0; i < formats.length; i ++ ) {
98
+ const format = formats[ i ];
99
+ const result = toMoment( date, format );
100
+ if ( result.isValid() ) {
101
+ return result;
102
+ }
103
+ }
104
+
105
+ const noFormat = moment( date );
106
+ return noFormat.isValid() ? noFormat : moment();
107
+ };
108
+
109
+ /**
110
+ * Convert a Date() object into a Moment.js object avoiding warnings of different formats
111
+ * used by Date
112
+ *
113
+ * @param {(Date|moment|string)} date The date to be converted.
114
+ * @param {string} format The format of the data to be used
115
+ * @param {bool} Force the parse of the format default to true
116
+ * @returns {moment} A moment object
117
+ */
118
+ export const toMoment = ( date, format = dateUtil.FORMATS.DATABASE.datetime, parseFormat = true ) => {
119
+ if ( date instanceof moment || date instanceof Date ) {
120
+ return moment( date );
121
+ } else if ( isString( date ) ) {
122
+ return moment( date, parseFormat ? toFormat( format ) : format );
123
+ }
124
+
125
+ return moment();
126
+ };
127
+
128
+ export const toMomentFromDate = ( date ) => {
129
+ if ( ! ( date instanceof Date ) ) {
130
+ throw new Error( 'Make sure your date is an instance of Date' );
131
+ }
132
+
133
+ const year = date.getFullYear();
134
+ const month = date.getMonth();
135
+ const day = date.getDate();
136
+
137
+ return moment()
138
+ .year( year )
139
+ .month( month )
140
+ .date( day )
141
+ .startOf( 'day' );
142
+ };
143
+
144
+ /**
145
+ * Convert a Date() object or date string and time into a moment object
146
+ *
147
+ * @param {(Date|moment|string)} date The date to be converted.
148
+ * @param {string} time The time string in HH:mm format..
149
+ * @returns {moment} A moment object
150
+ */
151
+ export const toMomentFromDateTime = ( date, time ) => {
152
+ const [ hours, minutes ] = time.split( ':' );
153
+ return moment( date ).hours( hours ).minutes( minutes );
154
+ };
155
+
156
+ /**
157
+ * Replace the date of a moment object with another date from another moment object
158
+ *
159
+ * @param {moment} original The moment object where the date is going to be replaced
160
+ * @param {moment} replaced The moment object where the date to be used to replace is located
161
+ * @returns {moment} A moment object where the date is replaced
162
+ */
163
+ export const replaceDate = ( original, replaced ) => {
164
+ if ( ! ( original instanceof moment ) || ! ( replaced instanceof moment ) ) {
165
+ throw new Error( 'Make sure your values are instances of moment' );
166
+ }
167
+
168
+ return original
169
+ .year( replaced.year() )
170
+ .month( replaced.month() )
171
+ .date( replaced.date() );
172
+ };
173
+
174
+ /**
175
+ * Set time in seconds to a moment object
176
+ *
177
+ * @param {moment} original The original moment where the date is going to be set
178
+ * @param {number} seconds Amount of seconds to be set to the moment object.
179
+ * @returns {moment} A moment object with the new date
180
+ */
181
+ export const setTimeInSeconds = ( original, seconds = 0 ) => {
182
+ if ( ! ( original instanceof moment ) ) {
183
+ throw new Error( 'Make sure your values are instances of moment' );
184
+ }
185
+
186
+ if ( seconds < 0 ) {
187
+ return original;
188
+ }
189
+
190
+ return original
191
+ .startOf( 'day' )
192
+ .seconds( seconds || original.seconds() );
193
+ };
194
+
195
+ /**
196
+ * Total seconds of a current date from moment
197
+ *
198
+ * @param {moment} date The date to compare on the current day
199
+ * @returns {int} Total of seconds from start of the day to the current moment,
200
+ */
201
+ export const totalSeconds = ( date ) => {
202
+ if ( ! date || ! ( date instanceof moment ) ) {
203
+ return 0;
204
+ }
205
+
206
+ return date.diff( moment( date ).startOf( 'day' ), 'seconds' );
207
+ };
208
+
209
+ /**
210
+ * Convert a moment object into a WP date time format
211
+ *
212
+ * @param {moment} date A moment date object
213
+ * @param {string} format Format used to output the date
214
+ * @returns {string} A date time format
215
+ */
216
+ export const toDateTime = ( date, format = dateUtil.FORMATS.DATABASE.datetime ) => (
217
+ date.format( toFormat( format ) )
218
+ );
219
+
220
+ export const toDate = ( date, format = dateUtil.FORMATS.WP.date ) => (
221
+ date.format( toFormat( format ) )
222
+ );
223
+
224
+ export const toDateNoYear = ( date, format = dateUtil.FORMATS.WP.dateNoYear ) => (
225
+ date.format( toFormat( format ) )
226
+ );
227
+
228
+ export const toTime = ( date, format = dateUtil.FORMATS.WP.time ) => (
229
+ date.format( toFormat( format ) )
230
+ );
231
+
232
+ export const toTime24Hr = ( date, format = dateUtil.FORMATS.WP.time24Hr ) => (
233
+ date.format( toFormat( format ) )
234
+ );
235
+
236
+ export const toDatabaseDate = ( date, format = dateUtil.FORMATS.DATABASE.date ) => (
237
+ date.format( toFormat( format ) )
238
+ );
239
+
240
+ export const toDatabaseTime = ( date, format = dateUtil.FORMATS.DATABASE.time ) => (
241
+ date.format( toFormat( format ) )
242
+ );
243
+
244
+ export const toDatePicker = ( date = moment(), format = 'YYYY-MM-DDTHH:mm:ss' ) => (
245
+ date.format( format )
246
+ );
247
+
248
+ /**
249
+ * Test if the start and end dates are the same day.
250
+ *
251
+ * @param {moment} start The start date
252
+ * @param {(moment|String)} end The end date
253
+ * @returns {boolean} if the start and end dates are the same day
254
+ */
255
+ export const isSameDay = ( start, end ) => {
256
+
257
+ if ( ! start || ! end ) {
258
+ return false;
259
+ }
260
+
261
+ return moment( start ).isSame( end, 'day' );
262
+ };
263
+
264
+ /**
265
+ * Test if two moment objects are in the same month
266
+ *
267
+ * @param {moment} start The start moment
268
+ * @param {moment} end The end moment
269
+ * @returns {boolean} true if start and end are on the same month
270
+ */
271
+ export const isSameMonth = ( start, end ) => {
272
+
273
+ if ( ! start || ! end ) {
274
+ return false;
275
+ }
276
+
277
+ return moment( start ).isSame( end, 'month' );
278
+ };
279
+
280
+ /**
281
+ * Test if the start and end dates have the same year.
282
+ *
283
+ * @param {moment} start The start date
284
+ * @param {(moment|String)} end The end date
285
+ * @returns {boolean} if the start and end dates have the same year
286
+ */
287
+ export const isSameYear = ( start, end ) => (
288
+ toMoment( start ).isSame( toMoment( end ), 'year' )
289
+ );
290
+
291
+ /**
292
+ * Reset the time of an event by creating an object with start and end ensuring the end event is
293
+ * after the start date and both are on the same day if the start is one hour before the end of the
294
+ * day it will remove an hour of the start to ensure both start / end happen on the same day
295
+ *
296
+ * @param {moment} start The start date
297
+ * @returns {{start: {moment}, end: {moment}}} Object with two keys: start, end
298
+ */
299
+ export const resetTimes = ( start ) => {
300
+ const testMoment = start.clone().add( time.HOUR_IN_SECONDS, 'seconds' );
301
+
302
+ // Rollback an hour before adding half an hour as we are on the edge of the day
303
+ if ( ! isSameDay( start, testMoment ) ) {
304
+ start.subtract( time.HOUR_IN_SECONDS, 'seconds' );
305
+ }
306
+
307
+ const end = start.clone().add( time.HOUR_IN_SECONDS, 'seconds' );
308
+
309
+ return {
310
+ start,
311
+ end,
312
+ };
313
+ };
314
+
315
+ /**
316
+ * Make sure the start time is always before the end time
317
+ *
318
+ * @param {moment} start The start date
319
+ * @param {moment} end The end date
320
+ * @returns {{start: {moment}, end: {moment}}} Object with two keys: start, end
321
+ */
322
+ export const adjustStart = ( start, end ) => {
323
+ if ( end.isSameOrBefore( start ) ) {
324
+ return resetTimes( start );
325
+ }
326
+
327
+ return {
328
+ start,
329
+ end,
330
+ };
331
+ };
common/src/modules/utils/number.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Calculate the percentage of two numbers
3
+ *
4
+ * @param {number} value Initial value from where to take the percentage
5
+ * @param {number} total Total value to get the percentage relative to this value
6
+ * @returns {number} total percentage value
7
+ */
8
+ export const percentage = ( value = 0, total = 0 ) => {
9
+ if ( total === 0 ) {
10
+ return 0;
11
+ }
12
+
13
+ const result = Number.parseFloat( ( value / total ) * 100 );
14
+
15
+ if ( isNaN( result ) ) {
16
+ throw new RangeError(
17
+ `Make sure ${value} and ${total} are valid numbers, operation result in NaN value`
18
+ );
19
+ }
20
+
21
+ return result;
22
+ };
common/src/modules/utils/proptypes.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Create chainable validator with isRequired check
3
+ * @param {function} validator
4
+ */
5
+ export const createChainableValidator = ( validator ) => {
6
+ const createChainedValidator = (
7
+ isRequired,
8
+ props,
9
+ propName,
10
+ componentName,
11
+ ) => {
12
+ const propValue = props[ propName ];
13
+
14
+ if ( propValue == null ) {
15
+ if ( isRequired ) {
16
+ if ( propValue === null ) {
17
+ /* eslint-disable-next-line max-len */
18
+ return new Error( `The prop \`${propName}\` is marked as required in \`${componentName}\`, but its value is \`null\`.` );
19
+ }
20
+ /* eslint-disable-next-line max-len */
21
+ return new Error( `The prop \`${propName}\` is marked as required in \`${componentName}\`, but its value is \`undefined\`.` );
22
+ }
23
+ return null;
24
+ } else {
25
+ return validator( props, propName, componentName );
26
+ }
27
+ };
28
+
29
+ const chainedValidator = createChainedValidator.bind( null, false );
30
+ chainedValidator.isRequired = createChainedValidator.bind( null, true );
31
+
32
+ return chainedValidator;
33
+ }
34
+
35
+ export const timeRegex = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/;
36
+
37
+ /**
38
+ * PropTypes check for type string and time format using 24h clock in hh:mm format
39
+ * e.g. 00:24, 03:57, 21:12
40
+ *
41
+ * @param {object} props
42
+ * @param {string} propName
43
+ * @param {string} componentName
44
+ */
45
+ export const timeFormat = ( props, propName, componentName ) => {
46
+ const propValue = props[ propName ];
47
+
48
+ if ( typeof propValue !== 'string' ) {
49
+ const type = typeof propValue;
50
+ /* eslint-disable-next-line max-len */
51
+ return new Error( `Invalid prop \`${propName}\` of type \`${type}\` supplied to \`${componentName}\`, expected \`string\`.` );
52
+ }
53
+
54
+ if ( ! timeRegex.test( propValue ) ) {
55
+ /* eslint-disable-next-line max-len */
56
+ return new Error( `Invalid prop \`${propName}\` format supplied to \`${componentName}\`, expected \`hh:mm\`.` );
57
+ }
58
+
59
+ return null;
60
+ };
61
+
62
+ export const nullType = ( props, propName, componentName ) => {
63
+ if ( null !== props[ propName ] ) {
64
+ return new Error(
65
+ `Invalid prop: \`${propName}\` supplied to \`${ componentName }\`, expect null.`
66
+ );
67
+ }
68
+ }
69
+
70
+ export default {
71
+ timeFormat: createChainableValidator( timeFormat ),
72
+ nullType: createChainableValidator( nullType ),
73
+ };
common/src/modules/utils/range.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { trim, isEmpty, split } from 'lodash';
5
+
6
+ /**
7
+ * Parse a string into a range type of string {a} - {b} where a and b are numbers
8
+ *
9
+ * @param {string} input The original string
10
+ * @returns {string} A formatted range string.
11
+ */
12
+ export const parser = ( input ) => {
13
+ const range = trim( input );
14
+
15
+ if ( isEmpty( range ) ) {
16
+ return range;
17
+ }
18
+
19
+ const chars = parseChars( input );
20
+
21
+ if ( isEmpty( chars ) ) {
22
+ return chars;
23
+ }
24
+
25
+ const [ a, b ] = extractParts( chars );
26
+ const [ num_a, num_b ] = [ parseFloat( a ), parseFloat( b ) ];
27
+
28
+ if ( ! num_b || num_b === num_a ) {
29
+ return num_a === 0 ? '' : trim( a );
30
+ }
31
+
32
+ return num_a >= num_b ? `${ trim( b ) } - ${ trim( a ) }` : `${ trim( a ) } - ${ trim( b ) }`;
33
+ };
34
+
35
+ /**
36
+ * Remove any char that is not a: number, dash, dot or comma.
37
+ *
38
+ * @param {string} input The string from where to extract the chars
39
+ * @returns {string} A string with only valid chars
40
+ */
41
+ export const parseChars = ( input = '' ) => (
42
+ split( input, ' ' )
43
+ .map( ( part ) => {
44
+ // Remove anything that is not a number a period or a dash
45
+ return part.replace( /[^0-9.,-]/g, '' );
46
+ } )
47
+ .join( ' ' )
48
+ .trim()
49
+ );
50
+
51
+ /**
52
+ * Extract only valid numbers from the string
53
+ *
54
+ * @param {string} chars The chars to be split into parts.
55
+ * @returns {array} An array with the parts
56
+ */
57
+ export const extractParts = ( chars ) => (
58
+ split( chars.replace( /,/g, '.' ), '-' )
59
+ // Convert , into . so we can parse into numbers
60
+ .map( ( item ) => {
61
+ const re = /([0-9]+(.[0-9]+)?)/g;
62
+ const result = re.exec( item.trim() );
63
+ return null === result ? '' : result[ 1 ];
64
+ } )
65
+ .filter( ( item ) => ! isEmpty( item ) )
66
+ .map( ( item ) => {
67
+ // If the user input the price with decimals (even .00) we want to keep them
68
+ const decimals = 0 < item.indexOf( '.' ) ? 2 : 0;
69
+ return parseFloat( item ).toFixed( decimals );
70
+ } )
71
+ .filter( ( item ) => ! isNaN( item ) )
72
+ .slice( 0, 2 )
73
+ );
74
+
75
+ /**
76
+ * Test to see if an input range is free of cost
77
+ *
78
+ * @param {string} input Range input
79
+ * @returns {boolean} true if the event has 0 on all parts of the range, false otherwise
80
+ */
81
+ export const isFree = ( input ) => {
82
+ const parts = split( input, '-' );
83
+ const test = parts
84
+ .map( ( item ) => parseFloat( item ) )
85
+ .filter( ( item ) => ! isNaN( item ) )
86
+ .filter( ( item ) => item === 0 );
87
+
88
+ return parts.length === test.length;
89
+ };
common/src/modules/utils/slide.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Element to slide gets the following CSS:
3
+ * max-height: 0;
4
+ * overflow: hidden;
5
+ */
6
+ import BezierEasing from 'bezier-easing';
7
+ import getHiddenHeight from './get-hidden-height';
8
+
9
+ const ease = BezierEasing( 0.25, 0.1, 0.25, 1 );
10
+
11
+ const requestIds = {};
12
+
13
+ /**
14
+ * Check that request id exists, if not create an entry
15
+ * @param {string} id Unique ID of animation
16
+ */
17
+ export const checkRequestIds = ( id ) => {
18
+ if ( ! requestIds[ id ] ) {
19
+ requestIds[ id ] = {
20
+ up: null,
21
+ down: null,
22
+ };
23
+ }
24
+
25
+ return requestIds[ id ];
26
+ };
27
+
28
+ /**
29
+ * Cancel animations with request id
30
+ * @param {string} id Unique ID of animation
31
+ */
32
+ const cancelAnimations = ( id ) => {
33
+ if ( requestIds[ id ].up ) {
34
+ window.cancelAnimationFrame( requestIds[ id ].up );
35
+ requestIds[ id ].up = null;
36
+ }
37
+ if ( requestIds[ id ].down ) {
38
+ window.cancelAnimationFrame( requestIds[ id ].down );
39
+ requestIds[ id ].down = null;
40
+ }
41
+ };
42
+
43
+ /**
44
+ * Like jQuery's slideDown function
45
+ * @param {Node} elem Element to show and hide
46
+ * @param {string} id Unique ID of animation
47
+ * @param {int} time Length of animation in ms
48
+ * @param {function} callback Callback function
49
+ */
50
+ export const down = ( elem, id, time = 400, callback = null ) => {
51
+ const startHeight = elem.offsetHeight;
52
+ const endHeight = getHiddenHeight( elem );
53
+ let startTime = null;
54
+ elem.style.maxHeight = '0';
55
+
56
+ checkRequestIds( id );
57
+ cancelAnimations( id );
58
+
59
+ const step = ( timestamp ) => {
60
+ if ( ! startTime ) {
61
+ startTime = timestamp;
62
+ }
63
+ const timeDiff = timestamp - startTime;
64
+ const progress = ease( timeDiff / time );
65
+ const height = ( progress * ( endHeight - startHeight ) ) + startHeight;
66
+ elem.style.maxHeight = `${height}px`;
67
+
68
+ if ( timeDiff < time ) {
69
+ requestIds[ id ].down = window.requestAnimationFrame( step );
70
+ } else {
71
+ requestIds[ id ].down = null;
72
+ elem.style.maxHeight = 'none';
73
+ if ( callback ) {
74
+ callback();
75
+ }
76
+ }
77
+ };
78
+
79
+ requestIds[ id ].down = window.requestAnimationFrame( step );
80
+ };
81
+
82
+ /**
83
+ * Slide element up
84
+ * @param {Node} elem Element to show and hide
85
+ * @param {string} id Unique ID of animation
86
+ * @param {int} time Length of animation in ms
87
+ * @param {function} callback Callback function
88
+ */
89
+ export const up = ( elem, id, time = 400, callback = null ) => {
90
+ const startHeight = elem.offsetHeight;
91
+ const endHeight = 0;
92
+ let startTime = null;
93
+ elem.style.maxHeight = `${startHeight}px`;
94
+
95
+ checkRequestIds( id );
96
+ cancelAnimations( id );
97
+
98
+ const step = ( timestamp ) => {
99
+ if ( ! startTime ) {
100
+ startTime = timestamp;
101
+ }
102
+ const timeDiff = timestamp - startTime;
103
+ const progress = ease( timeDiff / time );
104
+ const height = ( progress * ( endHeight - startHeight ) ) + startHeight;
105
+ elem.style.maxHeight = `${height}px`;
106
+
107
+ if ( timeDiff < time ) {
108
+ requestIds[ id ].up = window.requestAnimationFrame( step );
109
+ } else {
110
+ requestIds[ id ].up = null;
111
+ elem.style.maxHeight = '0';
112
+ if ( callback ) {
113
+ callback();
114
+ }
115
+ }
116
+ };
117
+
118
+ requestIds[ id ].up = window.requestAnimationFrame( step );
119
+ };
common/src/modules/utils/string.js ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { escapeRegExp, isUndefined, isString, identity } from 'lodash';
5
+
6
+ /**
7
+ * Test if a string is equivalent to a true value
8
+ *
9
+ * @param {string} value The value to be tested
10
+ * @returns {boolean} true if the value is a valid "true" value.
11
+ */
12
+ export const isTruthy = ( value ) => {
13
+ const validValues = [
14
+ 'true',
15
+ 'yes',
16
+ '1',
17
+ ];
18
+ return validValues.indexOf( value ) !== -1;
19
+ };
20
+
21
+ /**
22
+ * Test if a string is equivalent to a false value
23
+ *
24
+ * @param {string} value The value to be tested
25
+ * @returns {boolean} true if the value is a valid "false" value.
26
+ */
27
+ export const isFalsy = ( value ) => {
28
+ const validValues = [
29
+ 'false',
30
+ 'no',
31
+ '0',
32
+ '',
33
+ ];
34
+ return validValues.indexOf( value ) !== -1;
35
+ };
36
+
37
+ export const replaceWithObject = ( str = '', pairs = {} ) => {
38
+ const substrs = Object.keys( pairs ).map( escapeRegExp );
39
+ return str.split( RegExp( `(${ substrs.join( '|' ) })` ) )
40
+ .map( part => isUndefined( pairs[ part ] ) ? part : pairs[ part ] )
41
+ .join( '' );
42
+ };
43
+
44
+ /**
45
+ * Extract the words from a string into an array of words removing all the empty spaces.
46
+ *
47
+ * @param {string} text The initial text
48
+ * @returns {array} Return an array with the words
49
+ */
50
+ export const getWords = ( text = '' ) => {
51
+ if ( ! isString( text ) ) {
52
+ return [];
53
+ }
54
+ return text.split( /\s/ ).filter( identity );
55
+ };
56
+
57
+ /**
58
+ * Apply separators specifically for check box style list where if there are more than 2 words the first
59
+ * separators except the last is different from the rest, and if there are only 2 words it only uses
60
+ * the last separator instead
61
+ *
62
+ * @param {array} words The list of words to join
63
+ * @param {string} startSeparator the separator applied if there are more than 2 words between all the words except the last one
64
+ * @param {string} endSeparator separator applied between the last words
65
+ * @returns {string} return a string with custom separators between words
66
+ */
67
+ export const wordsAsList = ( words, startSeparator = ', ', endSeparator = ' & ' ) => {
68
+ if ( words.length <= 1 ) {
69
+ return words.join( '' );
70
+ } else {
71
+ const start = words.slice( 0, words.length - 1 ).join( startSeparator );
72
+ const last = words[ words.length - 1 ];
73
+ return `${ start }${ endSeparator }${ last }`;
74
+ }
75
+ };
76
+
77
+ /**
78
+ * Creates a string that only contains a-z characters, useful specially for keys
79
+ *
80
+ * @param {string} text Then ame to be normalized
81
+ * @returns {string} A formatted string with no spacing and only a-z chars
82
+ */
83
+ export const normalize = ( text = '' ) => {
84
+ if ( ! isString( text ) ) {
85
+ return '';
86
+ }
87
+ return text.toLowerCase()
88
+ // Remove any non word or space
89
+ .replace( /[^a-z\s]/g, '' )
90
+ .trim()
91
+ .replace( /\s+/g, '-' );
92
+ };
93
+
94
+ /**
95
+ * Remove invalid characters from a string that aren't consider as valid for a block name.
96
+ *
97
+ * @since 4.8
98
+ *
99
+ * @param {string} text The text to be formatted as block name
100
+ * @returns {string} The formatted text
101
+ */
102
+ export const toBlockName = ( text = '' ) => {
103
+ if ( ! isString( text ) ) {
104
+ return '';
105
+ }
106
+
107
+ // Remove any non numeric, a-z or - value
108
+ return text.replace(/[^a-zA-Z0-9-]/g, '' );
109
+ }
common/src/modules/utils/time.js ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import zeroFill from 'zero-fill';
5
+
6
+ export const MINUTE_IN_SECONDS = 60;
7
+ export const HALF_HOUR_IN_SECONDS = MINUTE_IN_SECONDS * 30;
8
+ export const HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS;
9
+ export const DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS;
10
+
11
+ export const START_OF_DAY = '00:00';
12
+ export const END_OF_DAY = '23:59';
13
+
14
+ /**
15
+ * Round the time of a time string
16
+ * If the minutes is lower than 30, it will round the minutes to 0
17
+ * If the minutes is greater than or equal to 30, it will round the minutes to 30
18
+ *
19
+ * @param {string} time
20
+ * @returns {moment} A moment object
21
+ */
22
+ export const roundTime = ( time, format = TIME_FORMAT_MM_SS ) => {
23
+ const seconds = toSeconds( time, format );
24
+ const overage = seconds % ( MINUTE_IN_SECONDS * 30 );
25
+ const roundedSeconds = seconds - overage;
26
+ return fromSeconds( roundedSeconds, format );
27
+ }
28
+
29
+ /**
30
+ * The code below is copied from the library hh-mm-ss
31
+ * Link: https://www.npmjs.com/package/hh-mm-ss
32
+ * The code has been copied so that Modern Tribe can maintain this library
33
+ * internally and adjust as needed.
34
+ */
35
+ export const TIME_FORMAT_HH_MM_SS_SSS = 'hh:mm:ss.sss';
36
+ export const TIME_FORMAT_HH_MM_SS = 'hh:mm:ss';
37
+ export const TIME_FORMAT_HH_MM = 'hh:mm';
38
+ export const TIME_FORMAT_MM_SS_SSS = 'mm:ss.sss';
39
+ export const TIME_FORMAT_MM_SS = 'mm:ss';
40
+
41
+ export const SECOND_IN_MS = 1000;
42
+ export const MINUTE_IN_MS = MINUTE_IN_SECONDS * SECOND_IN_MS;
43
+ export const HOUR_IN_MS = HOUR_IN_SECONDS * SECOND_IN_MS;
44
+
45
+ /**
46
+ * Converts milliseconds to time in the format provided
47
+ *
48
+ * @param {int} ms Milliseconds to convert from
49
+ * @param {string} format Format of time to convert to
50
+ * @returns {string} Time string equivalent of milliseconds in format provided
51
+ */
52
+ export const fromMilliseconds = ( ms, format = TIME_FORMAT_MM_SS ) => {
53
+ if ( typeof ms !== 'number' || Number.isNaN( ms ) ) {
54
+ /* eslint-disable-next-line max-len */
55
+ throw new Error( 'Argument `ms` provided to `fromMilliseconds` is not a number or is NaN.' );
56
+ }
57
+
58
+ const absMs = Math.abs( ms );
59
+
60
+ const negative = ( ms < 0 );
61
+ const hours = Math.floor( absMs / HOUR_IN_MS );
62
+ const minutes = Math.floor( absMs % HOUR_IN_MS / MINUTE_IN_MS );
63
+ const seconds = Math.floor( absMs % MINUTE_IN_MS / SECOND_IN_MS );
64
+ const miliseconds = Math.floor( absMs % SECOND_IN_MS );
65
+
66
+ return formatTime( {
67
+ negative,
68
+ hours,
69
+ minutes,
70
+ seconds,
71
+ miliseconds,
72
+ }, format );
73
+ };
74
+
75
+ /**
76
+ * Converts seconds to time in the format provided
77
+ *
78
+ * @param {int} s Seconds to convert from
79
+ * @param {string} format Format of time to convert to
80
+ * @returns {string} Time string equivalent of seconds in format provided
81
+ */
82
+ export const fromSeconds = ( s, format = TIME_FORMAT_MM_SS ) => {
83
+ if ( typeof s !== 'number' || Number.isNaN( s ) ) {
84
+ /* eslint-disable-next-line max-len */
85
+ throw new Error( 'Argument `s` provided to `fromSeconds` is not a number or is NaN.' );
86
+ }
87
+
88
+ const ms = s * SECOND_IN_MS;
89
+
90
+ return fromMilliseconds( ms, format );
91
+ };
92
+
93
+ /**
94
+ * Converts time in the format provided to milliseconds
95
+ *
96
+ * @param {string} time Time string to convert from
97
+ * @param {string} format Format of time to convert from
98
+ * @returns {int} Milliseconds equivalent of time string in format provided
99
+ */
100
+ export const toMilliseconds = ( time, format = TIME_FORMAT_MM_SS ) => {
101
+ let re;
102
+
103
+ if ( [
104
+ TIME_FORMAT_HH_MM_SS_SSS,
105
+ TIME_FORMAT_HH_MM_SS,
106
+ TIME_FORMAT_MM_SS_SSS,
107
+ TIME_FORMAT_MM_SS,
108
+ ].includes( format ) ) {
109
+ re = /^(-)?(?:(\d\d+):)?(\d\d):(\d\d)(\.\d+)?$/;
110
+ } else if ( format === TIME_FORMAT_HH_MM ) {
111
+ re = /^(-)?(\d\d):(\d\d)(?::(\d\d)(?:(\.\d+))?)?$/;
112
+ } else {
113
+ /* eslint-disable-next-line max-len */
114
+ throw new Error( 'Argument `format` provided to `toMilliseconds` is not a recognized format.' );
115
+ }
116
+
117
+ const result = re.exec( time );
118
+ if ( ! result ) {
119
+ /* eslint-disable-next-line max-len */
120
+ throw new Error( 'Argument `time` provided to `toMilliseconds` is not a recognized format.' );
121
+ }
122
+
123
+ const negative = result[ 1 ] === '-';
124
+ const hours = result[ 2 ] | 0;
125
+ const minutes = result[ 3 ] | 0;
126
+ const seconds = result[ 4 ] | 0;
127
+ const miliseconds = Math.floor( 1000 * result[ 5 ] | 0 );
128
+
129
+ if ( minutes >= 60 || seconds >= 60 ) {
130
+ /* eslint-disable-next-line max-len */
131
+ throw new Error( 'Argument `time` provided to `toMilliseconds` contains minutes or seconds greater than 59.' );
132
+ }
133
+
134
+ return ( negative ? -1 : 1 ) * (
135
+ hours * HOUR_IN_MS
136
+ + minutes * MINUTE_IN_MS
137
+ + seconds * SECOND_IN_MS
138
+ + miliseconds
139
+ );
140
+ };
141
+
142
+ /**
143
+ * Converts time in the format provided to seconds
144
+ *
145
+ * @param {string} time Time string to convert from
146
+ * @param {string} format Format of time to convert from
147
+ * @returns {int} Seconds equivalent of time string in format provided
148
+ */
149
+ export const toSeconds = ( time, format = TIME_FORMAT_MM_SS ) => {
150
+ const ms = toMilliseconds( time, format );
151
+ return Math.floor( ms / SECOND_IN_MS );
152
+ };
153
+
154
+ /**
155
+ * Formats time object to time string in the format provided
156
+ *
157
+ * @param {object} time Time object to format from
158
+ * @param {string} format Format of time to format to
159
+ * @returns {string} Time string in format provided
160
+ */
161
+ export const formatTime = ( time, format ) => {
162
+ let showMs;
163
+ let showSc;
164
+ let showHr;
165
+
166
+ switch ( format ) {
167
+ case TIME_FORMAT_HH_MM_SS_SSS:
168
+ showMs = true;
169
+ showSc = true;
170
+ showHr = true;
171
+ break;
172
+ case TIME_FORMAT_HH_MM_SS:
173
+ showMs = ! ! time.miliseconds;
174
+ showSc = true;
175
+ showHr = true;
176
+ break;
177
+ case TIME_FORMAT_HH_MM:
178
+ showMs = ! ! time.miliseconds;
179
+ showSc = showMs || ! ! time.seconds;
180
+ showHr = true;
181
+ break;
182
+ case TIME_FORMAT_MM_SS_SSS:
183
+ showMs = true;
184
+ showSc = true;
185
+ showHr = ! ! time.hours;
186
+ break;
187
+ case TIME_FORMAT_MM_SS:
188
+ showMs = ! ! time.miliseconds;
189
+ showSc = true;
190
+ showHr = ! ! time.hours;
191
+ break;
192
+ default:
193
+ /* eslint-disable-next-line max-len */
194
+ throw new Error( 'Argument `format` provided to `formatTime` is not a recognized format.' );
195
+ }
196
+
197
+ const hh = zeroFill( 2, time.hours );
198
+ const mm = zeroFill( 2, time.minutes );
199
+ const ss = zeroFill( 2, time.seconds );
200
+ const sss = zeroFill( 3, time.miliseconds );
201
+
202
+ return ( time.negative ? '-' : '' ) + ( showHr ? (
203
+ showMs ? `${hh}:${mm}:${ss}.${sss}` : showSc ? `${hh}:${mm}:${ss}` : `${hh}:${mm}`
204
+ ) : (
205
+ showMs ? `${mm}:${ss}.${sss}` : `${mm}:${ss}`
206
+ ) );
207
+ };
common/src/modules/utils/timezone.js ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { find, flatten, map, get } from 'lodash';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { timezoneHtml } from '@moderntribe/common/utils/globals';
10
+
11
+ /**
12
+ * Module Code
13
+ */
14
+
15
+ let timezoneOpts;
16
+
17
+ export const getTimezoneOpts = () => {
18
+ // Verify if we have it in cache solved
19
+ if ( timezoneOpts ) {
20
+ return timezoneOpts;
21
+ }
22
+
23
+ const $timezoneOpts = jQuery( timezoneHtml() );
24
+ const groups = [];
25
+ let number = 0;
26
+
27
+ $timezoneOpts.each( ( index, item ) => {
28
+ const $group = jQuery( item );
29
+
30
+ if ( ! $group.is( 'optgroup' ) ) {
31
+ return;
32
+ }
33
+
34
+ number++;
35
+
36
+ const label = $group.attr( 'label' );
37
+ const group = {
38
+ key: label,
39
+ text: label,
40
+ options: [],
41
+ };
42
+
43
+ $group.find( 'option' ).each( ( optIndex, optionEl ) => {
44
+ number++;
45
+
46
+ const $option = jQuery( optionEl );
47
+ group.options.push( {
48
+ key: $option.val(),
49
+ text: $option.text(),
50
+ index: number,
51
+ } );
52
+ } );
53
+
54
+ groups.push( group );
55
+ } );
56
+
57
+ // Save it in a cache
58
+ timezoneOpts = groups;
59
+
60
+ return groups;
61
+ }
62
+
63
+ export const getItems = ( searchFor ) => {
64
+ const groups = getTimezoneOpts();
65
+
66
+ if ( searchFor ) {
67
+ const opts = flatten( map( groups, 'options' ) );
68
+ return find( opts, searchFor );
69
+ }
70
+
71
+ return groups;
72
+ }
common/src/resources/css/accessibility.css CHANGED
@@ -15,16 +15,14 @@
15
  * @link https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
16
  */
17
  .tribe-js .tribe-accessible-js-hidden {
18
- clip: rect( 1px 1px 1px 1px );
19
- /* IE 6/7 */
20
- clip: rect( 1px, 1px, 1px, 1px );
21
- height: 1px;
22
- overflow: hidden;
23
- position: absolute;
24
- white-space: nowrap;
25
- /* added line */
26
- width: 1px;
27
- }
28
  .tribe-accessible-hidden {
29
  clip: rect( 1px 1px 1px 1px ); /* IE 6/7 */
30
  clip: rect( 1px, 1px, 1px, 1px );
15
  * @link https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
16
  */
17
  .tribe-js .tribe-accessible-js-hidden {
18
+ clip: rect( 1px 1px 1px 1px ); /* IE 6/7 */
19
+ clip: rect( 1px, 1px, 1px, 1px );
20
+ height: 1px;
21
+ overflow: hidden;
22
+ position: absolute;
23
+ white-space: nowrap; /* added line */
24
+ width: 1px;
25
+ }
 
 
26
  .tribe-accessible-hidden {
27
  clip: rect( 1px 1px 1px 1px ); /* IE 6/7 */
28
  clip: rect( 1px, 1px, 1px, 1px );
common/src/resources/css/app-shop.css CHANGED
@@ -11,76 +11,92 @@
11
  #tribe-app-shop {
12
  max-width: 960px;
13
  }
14
- #tribe-app-shop .addon-grid {
15
- width: 100%;
16
- }
17
- #tribe-app-shop .header h1 {
18
- display: inline-block;
19
- }
20
- #tribe-app-shop .header .button {
21
- margin-top: 10px;
22
- }
23
- #tribe-app-shop .tribe-addon {
24
- background-color: #fff;
25
- border-bottom: 1px solid #dfdfdf;
26
- display: inline-block;
27
- margin: 0 15px 15px 0;
28
- overflow: hidden;
29
- padding: 0;
30
- position: relative;
31
- vertical-align: top;
32
- width: 300px;
33
- border-radius: 3px 3px 3px 3px;
34
- box-sizing: border-box;
35
- }
36
- #tribe-app-shop .tribe-addon h4 {
37
- font-size: 1.17em;
38
- margin: 15px 0;
39
- }
40
- #tribe-app-shop .tribe-addon h4 a {
41
- text-decoration: none;
42
- }
43
- #tribe-app-shop .tribe-addon .button {
44
- bottom: 15px;
45
- display: block;
46
- position: absolute;
47
- }
48
- #tribe-app-shop .tribe-addon .button-disabled {
49
- padding-left: 3px;
50
- }
51
- #tribe-app-shop .tribe-addon .button-disabled .dashicons {
52
- font-size: 28px;
53
- padding-right: 9px;
54
- }
55
- #tribe-app-shop .tribe-addon .caption {
56
- padding: 0 15px 45px 15px;
57
- }
58
- #tribe-app-shop .tribe-addon .thumb img {
59
- height: 228px;
60
- max-width: 100%;
61
- width: 300px;
62
- }
63
- #tribe-app-shop .tribe-addon.first {
64
- margin: 20px 0;
65
- overflow: hidden;
66
- padding: 0;
67
- width: 937px;
68
- }
69
- #tribe-app-shop .tribe-addon.first h4 {
70
- font-size: 20px;
71
- line-height: 1.4;
72
- margin: 15px 0 0 0;
73
- }
74
- #tribe-app-shop .tribe-addon.first .caption {
75
- display: inline-block;
76
- padding-left: 20px;
77
- width: 600px;
78
- }
79
- #tribe-app-shop .tribe-addon.first .thumb {
80
- float: left;
81
- height: 228px;
82
- width: 300px;
83
- }
84
- #tribe-app-shop .tribe-installed-headline {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  margin-bottom: 20px;
86
- }
11
  #tribe-app-shop {
12
  max-width: 960px;
13
  }
14
+
15
+ #tribe-app-shop .addon-grid {
16
+ width: 100%;
17
+ }
18
+
19
+ #tribe-app-shop .header h1 {
20
+ display: inline-block;
21
+ }
22
+
23
+ #tribe-app-shop .header .button {
24
+ margin-top: 10px;
25
+ }
26
+
27
+ #tribe-app-shop .tribe-addon {
28
+ background-color: #fff;
29
+ border-bottom: 1px solid #dfdfdf;
30
+ display: inline-block;
31
+ margin: 0 15px 15px 0;
32
+ overflow: hidden;
33
+ padding: 0;
34
+ position: relative;
35
+ vertical-align: top;
36
+ width: 300px;
37
+ border-radius: 3px 3px 3px 3px;
38
+ box-sizing: border-box;
39
+ }
40
+
41
+ #tribe-app-shop .tribe-addon h4 {
42
+ font-size: 1.17em;
43
+ margin: 15px 0;
44
+ }
45
+
46
+ #tribe-app-shop .tribe-addon h4 a {
47
+ text-decoration: none;
48
+ }
49
+
50
+ #tribe-app-shop .tribe-addon .button {
51
+ bottom: 15px;
52
+ display: block;
53
+ position: absolute;
54
+ }
55
+
56
+ #tribe-app-shop .tribe-addon .button-disabled {
57
+ padding-left: 3px;
58
+ }
59
+
60
+ #tribe-app-shop .tribe-addon .button-disabled .dashicons {
61
+ font-size: 28px;
62
+ padding-right: 9px;
63
+ }
64
+
65
+ #tribe-app-shop .tribe-addon .caption {
66
+ padding: 0 15px 45px 15px;
67
+ }
68
+
69
+ #tribe-app-shop .tribe-addon .thumb img {
70
+ height: 228px;
71
+ max-width: 100%;
72
+ width: 300px;
73
+ }
74
+
75
+ #tribe-app-shop .tribe-addon.first {
76
+ margin: 20px 0;
77
+ overflow: hidden;
78
+ padding: 0;
79
+ width: 937px;
80
+ }
81
+
82
+ #tribe-app-shop .tribe-addon.first h4 {
83
+ font-size: 20px;
84
+ line-height: 1.4;
85
+ margin: 15px 0 0 0;
86
+ }
87
+
88
+ #tribe-app-shop .tribe-addon.first .caption {
89
+ display: inline-block;
90
+ padding-left: 20px;
91
+ width: 600px;
92
+ }
93
+
94
+ #tribe-app-shop .tribe-addon.first .thumb {
95
+ float: left;
96
+ height: 228px;
97
+ width: 300px;
98
+ }
99
+
100
+ #tribe-app-shop .tribe-installed-headline {
101
  margin-bottom: 20px;
102
+ }
common/src/resources/css/app/components.css CHANGED
@@ -1,2 +1,2 @@
1
- .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}
2
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
1
+ .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit .editor-block-contextual-toolbar{display:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{outline:none}
2
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
common/src/resources/css/app/components.min.css CHANGED
@@ -1,4 +1,4 @@
1
- .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}
2
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
3
 
4
  /*# sourceMappingURL=components.min.css.map*/
1
+ .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit .editor-block-contextual-toolbar{display:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{outline:none}
2
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
3
 
4
  /*# sourceMappingURL=components.min.css.map*/
common/src/resources/css/app/components.min.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://tribe.common.[name]/./src/modules/components/plugin-block-hooks/style.pcss","webpack://tribe.common.[name]/./src/modules/components/form/select/style.pcss"],"names":[],"mappings":"AAAA,iFAAiF,SAAS,2GAA2G,SAAS,yBAAyB,UAAU,6dAA6d,aAAa,0IAA0I,SAAS,4PAA4P,a;ACA1mC,0BAA0B,aAAa,8BAA8B,cAAc,gBAAgB,kCAAkC,sBAAsB,kBAAkB,yBAAyB,yCAAyC,mBAAmB,yBAAyB,YAAY,cAAc,aAAa,iCAAiC,eAAe,gBAAgB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,qBAAqB,WAAW,8CAA8C,OAAO,2CAA2C,uBAAuB,SAAS,cAAc,eAAe,cAAc,iBAAiB,iBAAiB,gBAAgB,WAAW,iDAAiD,yBAAyB,W","file":"src/resources/css/app/components.min.css","sourcesContent":[".tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}",".tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://tribe.common.[name]/./src/modules/components/plugin-block-hooks/style.pcss","webpack://tribe.common.[name]/./src/modules/components/form/select/style.pcss"],"names":[],"mappings":"AAAA,iFAAiF,SAAS,2GAA2G,SAAS,yBAAyB,UAAU,6dAA6d,aAAa,0IAA0I,SAAS,iJAAiJ,aAAa,2KAA2K,aAAa,2GAA2G,a;ACA/yC,0BAA0B,aAAa,8BAA8B,cAAc,gBAAgB,kCAAkC,sBAAsB,kBAAkB,yBAAyB,yCAAyC,mBAAmB,yBAAyB,YAAY,cAAc,aAAa,iCAAiC,eAAe,gBAAgB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,qBAAqB,WAAW,8CAA8C,OAAO,2CAA2C,uBAAuB,SAAS,cAAc,eAAe,cAAc,iBAAiB,iBAAiB,gBAAgB,WAAW,iDAAiD,yBAAyB,W","file":"src/resources/css/app/components.min.css","sourcesContent":[".tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit .editor-block-contextual-toolbar{display:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{outline:none}",".tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}"],"sourceRoot":""}
common/src/resources/css/app/elements.css CHANGED
@@ -1,13 +1,14 @@
1
- .tribe-editor__button{cursor:pointer}.tribe-editor__btn--label,.tribe-editor__button{background-color:transparent;border:none;padding:0;margin:0}.tribe-editor__btn--label{text-align:left}.tribe-editor__button--sm{background-color:#009fd4;color:#fff;padding:11px 16px 9px;font-size:15px;font-weight:700;line-height:18px;transition:background-color .2s ease}.tribe-editor__button--sm:focus,.tribe-editor__button--sm:hover{background-color:#007bb4}.tribe-editor__button--sm[disabled],.tribe-editor__button--sm[disabled]:focus,.tribe-editor__button--sm[disabled]:hover{background-color:#f3f4f5;color:#8d949b}
2
  .tribe-editor__accordion__row-content{max-height:0;overflow:hidden}.tribe-editor__accordion__row-content.active{max-height:none}
3
  .editor-block-inspector__card .tribe-editor__icons__container{padding:4px;display:flex;align-items:center;justify-content:center}.editor-block-inspector__card .tribe-editor__icons__container svg{width:28px;height:28px}.editor-block-inspector__card .tribe-editor__icons--tec{background-color:#199fd1}button[class*=" editor-block-list-item-tribe-"] svg,button[class^=editor-block-list-item-tribe-] svg{color:#16a0d6}
4
  .tribe-editor__counter{display:flex;flex-direction:column;align-items:center}.tribe-editor__counter__count{flex:none;color:#aeb4bb;font-size:32px;font-weight:700;line-height:40px;margin-bottom:10px}.tribe-editor__counter__label{flex:none;color:#aeb4bb;font-size:12px;line-height:14px;letter-spacing:.04px}
5
- .tribe-editor__image-upload__title{margin:0 0 12px;color:#000;font-size:15px;font-weight:700;line-height:18px}.tribe-editor__image-upload__content{display:flex;justify-content:space-between;align-items:center}.tribe-editor__image-upload--has-image .tribe-editor__image-upload__content{align-items:flex-start}.tribe-editor__image-upload__content p.tribe-editor__image-upload__description{flex:none;width:52%;font-family:Helvetica,sans-serif;font-size:14px;color:#545d66;line-height:18px;margin:0}.tribe-editor__image-upload__upload-button{flex:none;margin-right:10px}.tribe-editor__image-upload__image-wrapper{flex:none;width:42%;max-width:325px;padding-left:25px;position:relative}.tribe-editor__image-upload__remove-button{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:8px;border-radius:50%;background-color:#f8f9fb}.tribe-editor__image-upload__remove-button>svg,.tribe-editor__image-upload__remove-button>svg path{fill:#545d66}.tribe-editor__image-upload__remove-button:focus>svg,.tribe-editor__image-upload__remove-button:focus>svg path,.tribe-editor__image-upload__remove-button:hover>svg,.tribe-editor__image-upload__remove-button:hover>svg path{fill:#009fd4}.tribe-editor__image-upload__remove-button:disabled:focus>svg,.tribe-editor__image-upload__remove-button:disabled:focus>svg path,.tribe-editor__image-upload__remove-button:disabled:hover>svg,.tribe-editor__image-upload__remove-button:disabled:hover>svg path,.tribe-editor__image-upload__remove-button:disabled>svg,.tribe-editor__image-upload__remove-button:disabled>svg path{fill:#aeb4bb}.tribe-editor__image-upload__remove-button-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
6
- .tribe-editor__rsvp .tribe-editor__label-with-link,.tribe-editor__ticket .tribe-editor__label-with-link{display:flex;align-items:center;background-color:#fff;padding:10px 17px;border:1px solid #e1e3e6}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__labeled-item__label,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;padding-right:10px}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link{flex:none;color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;text-decoration:none;transition:color .2s ease}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover{color:#007bb4}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled{color:#aeb4bb}
7
  .tribe-editor__label-with-modal{display:flex;align-items:center;background-color:#fff;padding:11px 17px;border:1px solid #e1e3e6;height:40px}.tribe-editor__label-with-modal .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px}.tribe-editor__label-with-modal .tribe-editor__label-with-modal__modal-button{flex:none}.tribe-editor__label-with-modal .tribe-editor__modal-button__button{color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;transition:color .2s ease}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:hover{color:#007bb4}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:hover{color:#aeb4bb}
8
- .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}
9
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
10
  .tribe-editor__timepicker{display:inline-block}.tribe-editor__timepicker-label-container{background-color:#fff;border:1px solid #e1e3e6;padding-left:10px;border-radius:2px;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container input[type=time]{font-family:Noto Serif,serif;font-size:14px;padding:6px 0;border:none}.tribe-editor__timepicker-label-container input[type=time]::-webkit-clear-button{-webkit-appearance:none;display:none}.tribe-editor__timepicker-label-container input[type=time]:focus{box-shadow:none}.tribe-editor__timepicker-label-container button{background-color:#fefffe;color:#545d66;font-family:Helvetica,sans-serif;font-weight:400;line-height:1.5;padding:11px 10px 10px;text-decoration:none;border:none;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container button:disabled>svg.dashicon{fill:#aeb4bb}.tribe-editor__timepicker-label-container .tribe-editor__timepicker__all-day-btn{padding:6px 0}.tribe-editor__timepicker__dialog.components-popover .components-popover__content{min-width:110px}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items{height:250px;overflow:auto}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items .components-placeholder{height:inherit}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item{display:block;width:100%;color:#555d66;padding:5px 12px;cursor:pointer;border:0;border-bottom:1px solid #e2e4e7;line-height:20px;background:transparent;text-align:left}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current:not(:disabled):hover{color:#fff;background-color:#009fd4}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):hover{background-color:#e7f5fa}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled).is-active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):focus{position:relative}
 
11
  .tribe-editor__day-picker-input.DayPickerInput>input{border:1px solid #e1e3e6;color:#545d66;font-size:16px;line-height:24px;padding:7px 15px;width:100%;height:40px}.tribe-editor__day-picker-input.DayPickerInput>input:disabled{color:#aeb4bb}.tribe-editor__day-picker-input .DayPickerInput-Overlay{padding:20px;z-index:10}.tribe-editor__day-picker-input .DayPicker{width:100%}.tribe-editor__day-picker-input .DayPicker-Month{margin:0}.tribe-editor__day-picker-input .DayPicker-Caption>div,.tribe-editor__day-picker-input .DayPicker-Day,.tribe-editor__day-picker-input .DayPicker-Weekday{color:#545d66;font-family:Helvetica,"sans-serif";font-weight:400}.tribe-editor__day-picker-input .DayPicker-Caption>div{font-size:16px;margin-bottom:12px;text-align:center}.tribe-editor__day-picker-input .DayPicker-Weekday{font-size:12px}.tribe-editor__day-picker-input .DayPicker-Day{font-size:14px}.tribe-editor__day-picker-input .DayPicker-Day:hover{color:#007bb4;background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--today{color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--disabled{pointer-events:none;color:#ccc}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside){border-radius:0;background-color:#009fd4;color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside):hover{background-color:#007bb4;color:#fff}.tribe-editor__day-picker-input .DayPicker-NavButton--prev{left:0;top:0}.tribe-editor__day-picker-input .DayPicker-NavButton--next{right:0;top:0}.tribe-editor__day-picker-input .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside){background-color:#e7f5fa;color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside):hover{color:#007bb4}
12
  .tribe-editor__creatable-select .tribe-editor__creatable-select__control{height:40px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__creatable-select .tribe-editor__creatable-select__control:hover{border:1px solid #e1e3e6}.tribe-editor__creatable-select .tribe-editor__creatable-select__control--is-focused{box-shadow:none}.tribe-editor__creatable-select .tribe-editor__creatable-select__value-container{padding:2px 5px 2px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input{font-size:16px}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input{margin:0;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input,.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input:focus{box-shadow:none}.tribe-editor__creatable-select svg.tribe-editor__creatable-select__dropdown-indicator{fill:#555d66}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu-list{padding:0}.tribe-editor__creatable-select .tribe-editor__creatable-select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-focused{background-color:#e7f5fa}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-selected{background-color:#11a0d2}
13
  .tribe-editor__placeholder{border:2px dashed #e1e3e6;padding:12px 15px 14px;text-align:center;font-family:Helvetica,Arial,"sans-serif";font-size:1rem;line-height:1.5;font-weight:700;color:#8d949b;min-width:260px;display:inline-block}
1
+ .tribe-editor__btn--label{background-color:transparent;border:none;padding:0;margin:0;text-align:left}.editor-styles-wrapper .tribe-editor__button{background-color:transparent;border:none;padding:0;margin:0;font-family:Helvetica,"sans-serif";cursor:pointer}.editor-styles-wrapper .tribe-editor__button--sm{background-color:#009fd4;color:#fff;padding:11px 16px 9px;font-size:15px;font-weight:700;line-height:18px;transition:background-color .2s ease}.editor-styles-wrapper .tribe-editor__button--sm:focus,.editor-styles-wrapper .tribe-editor__button--sm:hover{background-color:#007bb4}.editor-styles-wrapper .tribe-editor__button--sm[disabled],.editor-styles-wrapper .tribe-editor__button--sm[disabled]:focus,.editor-styles-wrapper .tribe-editor__button--sm[disabled]:hover{background-color:#f3f4f5;color:#8d949b}
2
  .tribe-editor__accordion__row-content{max-height:0;overflow:hidden}.tribe-editor__accordion__row-content.active{max-height:none}
3
  .editor-block-inspector__card .tribe-editor__icons__container{padding:4px;display:flex;align-items:center;justify-content:center}.editor-block-inspector__card .tribe-editor__icons__container svg{width:28px;height:28px}.editor-block-inspector__card .tribe-editor__icons--tec{background-color:#199fd1}button[class*=" editor-block-list-item-tribe-"] svg,button[class^=editor-block-list-item-tribe-] svg{color:#16a0d6}
4
  .tribe-editor__counter{display:flex;flex-direction:column;align-items:center}.tribe-editor__counter__count{flex:none;color:#aeb4bb;font-size:32px;font-weight:700;line-height:40px;margin-bottom:10px}.tribe-editor__counter__label{flex:none;color:#aeb4bb;font-size:12px;line-height:14px;letter-spacing:.04px}
5
+ .edit-post-visual-editor .editor-block-list__block .tribe-editor__image-upload__title{padding:0;margin:0 0 12px;color:#000;font-size:15px;font-weight:700;line-height:18px}.tribe-editor__image-upload__content{display:flex;justify-content:space-between;align-items:center}.tribe-editor__image-upload--has-image .tribe-editor__image-upload__content{align-items:flex-start}.tribe-editor__image-upload__content p.tribe-editor__image-upload__description{flex:none;width:52%;font-family:Helvetica,sans-serif;font-size:14px;color:#545d66;line-height:18px;margin:0}.tribe-editor__image-upload__upload-button{flex:none;margin-right:10px}.tribe-editor__image-upload__image-wrapper{flex:none;width:42%;max-width:325px;padding-left:25px;position:relative}.tribe-editor__image-upload__remove-button{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:8px;border-radius:50%;background-color:#f8f9fb}.tribe-editor__image-upload__remove-button>svg,.tribe-editor__image-upload__remove-button>svg path{fill:#545d66}.tribe-editor__image-upload__remove-button:focus>svg,.tribe-editor__image-upload__remove-button:focus>svg path,.tribe-editor__image-upload__remove-button:hover>svg,.tribe-editor__image-upload__remove-button:hover>svg path{fill:#009fd4}.tribe-editor__image-upload__remove-button:disabled:focus>svg,.tribe-editor__image-upload__remove-button:disabled:focus>svg path,.tribe-editor__image-upload__remove-button:disabled:hover>svg,.tribe-editor__image-upload__remove-button:disabled:hover>svg path,.tribe-editor__image-upload__remove-button:disabled>svg,.tribe-editor__image-upload__remove-button:disabled>svg path{fill:#aeb4bb}.tribe-editor__image-upload__remove-button-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
6
+ .tribe-editor__rsvp .tribe-editor__label-with-link,.tribe-editor__ticket .tribe-editor__label-with-link{display:flex;align-items:center;background-color:#fff;padding:10px 17px;border:1px solid #e1e3e6}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__labeled-item__label,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;padding-right:10px}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link{flex:none;color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;text-decoration:none;box-shadow:none;transition:color .2s ease}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover{color:#007bb4}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled{color:#aeb4bb}
7
  .tribe-editor__label-with-modal{display:flex;align-items:center;background-color:#fff;padding:11px 17px;border:1px solid #e1e3e6;height:40px}.tribe-editor__label-with-modal .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px}.tribe-editor__label-with-modal .tribe-editor__label-with-modal__modal-button{flex:none}.tribe-editor__label-with-modal .tribe-editor__modal-button__button{color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;transition:color .2s ease}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:hover{color:#007bb4}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:hover{color:#aeb4bb}
8
+ .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit .editor-block-contextual-toolbar{display:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{outline:none}
9
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
10
  .tribe-editor__timepicker{display:inline-block}.tribe-editor__timepicker-label-container{background-color:#fff;border:1px solid #e1e3e6;padding-left:10px;border-radius:2px;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container input[type=time]{font-family:Noto Serif,serif;font-size:14px;padding:6px 0;border:none}.tribe-editor__timepicker-label-container input[type=time]::-webkit-clear-button{-webkit-appearance:none;display:none}.tribe-editor__timepicker-label-container input[type=time]:focus{box-shadow:none}.tribe-editor__timepicker-label-container button{background-color:#fefffe;color:#545d66;font-family:Helvetica,sans-serif;font-weight:400;line-height:1.5;padding:11px 10px 10px;text-decoration:none;border:none;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container button:disabled>svg.dashicon{fill:#aeb4bb}.tribe-editor__timepicker-label-container .tribe-editor__timepicker__all-day-btn{padding:6px 0}.tribe-editor__timepicker__dialog.components-popover .components-popover__content{min-width:110px}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items{height:250px;overflow:auto}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items .components-placeholder{height:inherit}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item{display:block;width:100%;color:#555d66;padding:5px 12px;cursor:pointer;border:0;border-bottom:1px solid #e2e4e7;line-height:20px;background:transparent;text-align:left}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current:not(:disabled):hover{color:#fff;background-color:#009fd4}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):hover{background-color:#e7f5fa}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled).is-active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):focus{position:relative}
11
+ .DayPicker{display:inline-block;font-size:1rem}.DayPicker-wrapper{position:relative;flex-direction:row;padding-bottom:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-Months{display:flex;flex-wrap:wrap;justify-content:center}.DayPicker-Month{display:table;margin:0 1em;margin-top:1em;border-spacing:0;border-collapse:collapse;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-NavButton{position:absolute;top:1em;right:1.5em;left:auto;display:inline-block;margin-top:2px;width:1.25em;height:1.25em;background-position:50%;background-size:50%;background-repeat:no-repeat;color:#8b9898;cursor:pointer}.DayPicker-NavButton:hover{opacity:.8}.DayPicker-NavButton--prev{margin-right:1.5em;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAVVJREFUWAnN2G0KgjAYwPHpGfRkaZeqvgQaK+hY3SUHrk1YzNLay/OiEFp92I+/Mp2F2Mh2lLISWnflFjzH263RQjzMZ19wgs73ez0o1WmtW+dgA01VxrE3p6l2GLsnBy1VYQOtVSEH/atCCgqpQgKKqYIOiq2CBkqtggLKqQIKgqgCBjpJ2Y5CdJ+zrT9A7HHSTA1dxUdHgzCqJIEwq0SDsKsEg6iqBIEoq/wEcVRZBXFV+QJxV5mBtlDFB5VjYTaGZ2sf4R9PM7U9ZU+lLuaetPP/5Die3ToO1+u+MKtHs06qODB2zBnI/jBd4MPQm1VkY79Tb18gB+C62FdBFsZR6yeIo1YQiLJWMIiqVjQIu1YSCLNWFgijVjYIuhYYCKoWKAiiFgoopxYaKLUWOii2FgkophYp6F3r42W5A9s9OcgNvva8xQaysKXlFytoqdYmQH6tF3toSUo0INq9AAAAAElFTkSuQmCC")}.DayPicker-NavButton--next{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAXRJREFUWAnN119ugjAcwPHWzJ1gnmxzB/BBE0n24m4xfNkTaOL7wOtsl3AXMMb+Vjaa1BG00N8fSEibPpAP3xAKKs2yjzTPH9RAjhEo9WzPr/Vm8zgE0+gXATAxxuxtqeJ9t5tIwv5AtQAApsfT6TPdbp+kUBcgVwvO51KqVhMkXKsVJFXrOkigVhCIs1Y4iKlWZxB1rX4gwlpRIIpa8SDkWmggrFq4IIRaJKCYWnSgnrXIQV1r8YD+1Vrn+bReagysIFfLABRt31v8oBu1xEBttfRbltmfjgEcWh9snUS2kNdBK6WN1vrOWxObWsz+fjxevsxmB1GQDfINWiev83nhaoiB/CoOU438oPrhXS0WpQ9xc1ZQWxWHqUYe0I0qrKCQKjygDlXIQV2r0IF6ViEBxVTBBSFUQQNhVYkHIVeJAtkNsbQ7c1LtzP6FsObhb2rCKv7NBIGoq4SDmKoEgTirXAcJVGkFSVVpgoSrXICGUMUH/QBZNSUy5XWUhwAAAABJRU5ErkJggg==")}.DayPicker-NavButton--interactionDisabled{display:none}.DayPicker-Caption{display:table-caption;margin-bottom:.5em;padding:0 .5em;text-align:left}.DayPicker-Caption>div{font-weight:500;font-size:1.15em}.DayPicker-Weekdays{display:table-header-group;margin-top:1em}.DayPicker-WeekdaysRow{display:table-row}.DayPicker-Weekday{display:table-cell;padding:.5em;color:#8b9898;text-align:center;font-size:.875em}.DayPicker-Weekday abbr[title]{border-bottom:none;text-decoration:none}.DayPicker-Body{display:table-row-group}.DayPicker-Week{display:table-row}.DayPicker-Day{border-radius:50%;text-align:center}.DayPicker-Day,.DayPicker-WeekNumber{display:table-cell;padding:.5em;vertical-align:middle;cursor:pointer}.DayPicker-WeekNumber{min-width:1em;border-right:1px solid #eaecec;color:#8b9898;text-align:right;font-size:.75em}.DayPicker--interactionDisabled .DayPicker-Day{cursor:default}.DayPicker-Footer{padding-top:.5em}.DayPicker-TodayButton{border:none;background-color:transparent;background-image:none;box-shadow:none;color:#4a90e2;font-size:.875em;cursor:pointer}.DayPicker-Day--today{color:#d0021b;font-weight:700}.DayPicker-Day--outside{color:#8b9898;cursor:default}.DayPicker-Day--disabled{color:#dce0e0;cursor:default}.DayPicker-Day--sunday{background-color:#f7f8f8}.DayPicker-Day--sunday:not(.DayPicker-Day--today){color:#dce0e0}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside){position:relative;background-color:#4a90e2;color:#f0f8ff}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside):hover{background-color:#51a0fa}.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#f0f8ff}.DayPickerInput{display:inline-block}.DayPickerInput-OverlayWrapper{position:relative}.DayPickerInput-Overlay{position:absolute;left:0;z-index:1;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.15)}
12
  .tribe-editor__day-picker-input.DayPickerInput>input{border:1px solid #e1e3e6;color:#545d66;font-size:16px;line-height:24px;padding:7px 15px;width:100%;height:40px}.tribe-editor__day-picker-input.DayPickerInput>input:disabled{color:#aeb4bb}.tribe-editor__day-picker-input .DayPickerInput-Overlay{padding:20px;z-index:10}.tribe-editor__day-picker-input .DayPicker{width:100%}.tribe-editor__day-picker-input .DayPicker-Month{margin:0}.tribe-editor__day-picker-input .DayPicker-Caption>div,.tribe-editor__day-picker-input .DayPicker-Day,.tribe-editor__day-picker-input .DayPicker-Weekday{color:#545d66;font-family:Helvetica,"sans-serif";font-weight:400}.tribe-editor__day-picker-input .DayPicker-Caption>div{font-size:16px;margin-bottom:12px;text-align:center}.tribe-editor__day-picker-input .DayPicker-Weekday{font-size:12px}.tribe-editor__day-picker-input .DayPicker-Day{font-size:14px}.tribe-editor__day-picker-input .DayPicker-Day:hover{color:#007bb4;background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--today{color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--disabled{pointer-events:none;color:#ccc}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside){border-radius:0;background-color:#009fd4;color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside):hover{background-color:#007bb4;color:#fff}.tribe-editor__day-picker-input .DayPicker-NavButton--prev{left:0;top:0}.tribe-editor__day-picker-input .DayPicker-NavButton--next{right:0;top:0}.tribe-editor__day-picker-input .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside){background-color:#e7f5fa;color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside):hover{color:#007bb4}
13
  .tribe-editor__creatable-select .tribe-editor__creatable-select__control{height:40px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__creatable-select .tribe-editor__creatable-select__control:hover{border:1px solid #e1e3e6}.tribe-editor__creatable-select .tribe-editor__creatable-select__control--is-focused{box-shadow:none}.tribe-editor__creatable-select .tribe-editor__creatable-select__value-container{padding:2px 5px 2px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input{font-size:16px}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input{margin:0;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input,.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input:focus{box-shadow:none}.tribe-editor__creatable-select svg.tribe-editor__creatable-select__dropdown-indicator{fill:#555d66}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu-list{padding:0}.tribe-editor__creatable-select .tribe-editor__creatable-select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-focused{background-color:#e7f5fa}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-selected{background-color:#11a0d2}
14
  .tribe-editor__placeholder{border:2px dashed #e1e3e6;padding:12px 15px 14px;text-align:center;font-family:Helvetica,Arial,"sans-serif";font-size:1rem;line-height:1.5;font-weight:700;color:#8d949b;min-width:260px;display:inline-block}
common/src/resources/css/app/elements.min.css CHANGED
@@ -1,13 +1,14 @@
1
- .tribe-editor__button{cursor:pointer}.tribe-editor__btn--label,.tribe-editor__button{background-color:transparent;border:none;padding:0;margin:0}.tribe-editor__btn--label{text-align:left}.tribe-editor__button--sm{background-color:#009fd4;color:#fff;padding:11px 16px 9px;font-size:15px;font-weight:700;line-height:18px;transition:background-color .2s ease}.tribe-editor__button--sm:focus,.tribe-editor__button--sm:hover{background-color:#007bb4}.tribe-editor__button--sm[disabled],.tribe-editor__button--sm[disabled]:focus,.tribe-editor__button--sm[disabled]:hover{background-color:#f3f4f5;color:#8d949b}
2
  .tribe-editor__accordion__row-content{max-height:0;overflow:hidden}.tribe-editor__accordion__row-content.active{max-height:none}
3
  .editor-block-inspector__card .tribe-editor__icons__container{padding:4px;display:flex;align-items:center;justify-content:center}.editor-block-inspector__card .tribe-editor__icons__container svg{width:28px;height:28px}.editor-block-inspector__card .tribe-editor__icons--tec{background-color:#199fd1}button[class*=" editor-block-list-item-tribe-"] svg,button[class^=editor-block-list-item-tribe-] svg{color:#16a0d6}
4
  .tribe-editor__counter{display:flex;flex-direction:column;align-items:center}.tribe-editor__counter__count{flex:none;color:#aeb4bb;font-size:32px;font-weight:700;line-height:40px;margin-bottom:10px}.tribe-editor__counter__label{flex:none;color:#aeb4bb;font-size:12px;line-height:14px;letter-spacing:.04px}
5
- .tribe-editor__image-upload__title{margin:0 0 12px;color:#000;font-size:15px;font-weight:700;line-height:18px}.tribe-editor__image-upload__content{display:flex;justify-content:space-between;align-items:center}.tribe-editor__image-upload--has-image .tribe-editor__image-upload__content{align-items:flex-start}.tribe-editor__image-upload__content p.tribe-editor__image-upload__description{flex:none;width:52%;font-family:Helvetica,sans-serif;font-size:14px;color:#545d66;line-height:18px;margin:0}.tribe-editor__image-upload__upload-button{flex:none;margin-right:10px}.tribe-editor__image-upload__image-wrapper{flex:none;width:42%;max-width:325px;padding-left:25px;position:relative}.tribe-editor__image-upload__remove-button{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:8px;border-radius:50%;background-color:#f8f9fb}.tribe-editor__image-upload__remove-button>svg,.tribe-editor__image-upload__remove-button>svg path{fill:#545d66}.tribe-editor__image-upload__remove-button:focus>svg,.tribe-editor__image-upload__remove-button:focus>svg path,.tribe-editor__image-upload__remove-button:hover>svg,.tribe-editor__image-upload__remove-button:hover>svg path{fill:#009fd4}.tribe-editor__image-upload__remove-button:disabled:focus>svg,.tribe-editor__image-upload__remove-button:disabled:focus>svg path,.tribe-editor__image-upload__remove-button:disabled:hover>svg,.tribe-editor__image-upload__remove-button:disabled:hover>svg path,.tribe-editor__image-upload__remove-button:disabled>svg,.tribe-editor__image-upload__remove-button:disabled>svg path{fill:#aeb4bb}.tribe-editor__image-upload__remove-button-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
6
- .tribe-editor__rsvp .tribe-editor__label-with-link,.tribe-editor__ticket .tribe-editor__label-with-link{display:flex;align-items:center;background-color:#fff;padding:10px 17px;border:1px solid #e1e3e6}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__labeled-item__label,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;padding-right:10px}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link{flex:none;color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;text-decoration:none;transition:color .2s ease}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover{color:#007bb4}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled{color:#aeb4bb}
7
  .tribe-editor__label-with-modal{display:flex;align-items:center;background-color:#fff;padding:11px 17px;border:1px solid #e1e3e6;height:40px}.tribe-editor__label-with-modal .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px}.tribe-editor__label-with-modal .tribe-editor__label-with-modal__modal-button{flex:none}.tribe-editor__label-with-modal .tribe-editor__modal-button__button{color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;transition:color .2s ease}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:hover{color:#007bb4}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:hover{color:#aeb4bb}
8
- .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}
9
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
10
  .tribe-editor__timepicker{display:inline-block}.tribe-editor__timepicker-label-container{background-color:#fff;border:1px solid #e1e3e6;padding-left:10px;border-radius:2px;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container input[type=time]{font-family:Noto Serif,serif;font-size:14px;padding:6px 0;border:none}.tribe-editor__timepicker-label-container input[type=time]::-webkit-clear-button{-webkit-appearance:none;display:none}.tribe-editor__timepicker-label-container input[type=time]:focus{box-shadow:none}.tribe-editor__timepicker-label-container button{background-color:#fefffe;color:#545d66;font-family:Helvetica,sans-serif;font-weight:400;line-height:1.5;padding:11px 10px 10px;text-decoration:none;border:none;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container button:disabled>svg.dashicon{fill:#aeb4bb}.tribe-editor__timepicker-label-container .tribe-editor__timepicker__all-day-btn{padding:6px 0}.tribe-editor__timepicker__dialog.components-popover .components-popover__content{min-width:110px}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items{height:250px;overflow:auto}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items .components-placeholder{height:inherit}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item{display:block;width:100%;color:#555d66;padding:5px 12px;cursor:pointer;border:0;border-bottom:1px solid #e2e4e7;line-height:20px;background:transparent;text-align:left}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current:not(:disabled):hover{color:#fff;background-color:#009fd4}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):hover{background-color:#e7f5fa}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled).is-active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):focus{position:relative}
 
11
  .tribe-editor__day-picker-input.DayPickerInput>input{border:1px solid #e1e3e6;color:#545d66;font-size:16px;line-height:24px;padding:7px 15px;width:100%;height:40px}.tribe-editor__day-picker-input.DayPickerInput>input:disabled{color:#aeb4bb}.tribe-editor__day-picker-input .DayPickerInput-Overlay{padding:20px;z-index:10}.tribe-editor__day-picker-input .DayPicker{width:100%}.tribe-editor__day-picker-input .DayPicker-Month{margin:0}.tribe-editor__day-picker-input .DayPicker-Caption>div,.tribe-editor__day-picker-input .DayPicker-Day,.tribe-editor__day-picker-input .DayPicker-Weekday{color:#545d66;font-family:Helvetica,"sans-serif";font-weight:400}.tribe-editor__day-picker-input .DayPicker-Caption>div{font-size:16px;margin-bottom:12px;text-align:center}.tribe-editor__day-picker-input .DayPicker-Weekday{font-size:12px}.tribe-editor__day-picker-input .DayPicker-Day{font-size:14px}.tribe-editor__day-picker-input .DayPicker-Day:hover{color:#007bb4;background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--today{color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--disabled{pointer-events:none;color:#ccc}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside){border-radius:0;background-color:#009fd4;color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside):hover{background-color:#007bb4;color:#fff}.tribe-editor__day-picker-input .DayPicker-NavButton--prev{left:0;top:0}.tribe-editor__day-picker-input .DayPicker-NavButton--next{right:0;top:0}.tribe-editor__day-picker-input .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside){background-color:#e7f5fa;color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside):hover{color:#007bb4}
12
  .tribe-editor__creatable-select .tribe-editor__creatable-select__control{height:40px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__creatable-select .tribe-editor__creatable-select__control:hover{border:1px solid #e1e3e6}.tribe-editor__creatable-select .tribe-editor__creatable-select__control--is-focused{box-shadow:none}.tribe-editor__creatable-select .tribe-editor__creatable-select__value-container{padding:2px 5px 2px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input{font-size:16px}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input{margin:0;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input,.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input:focus{box-shadow:none}.tribe-editor__creatable-select svg.tribe-editor__creatable-select__dropdown-indicator{fill:#555d66}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu-list{padding:0}.tribe-editor__creatable-select .tribe-editor__creatable-select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-focused{background-color:#e7f5fa}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-selected{background-color:#11a0d2}
13
  .tribe-editor__placeholder{border:2px dashed #e1e3e6;padding:12px 15px 14px;text-align:center;font-family:Helvetica,Arial,"sans-serif";font-size:1rem;line-height:1.5;font-weight:700;color:#8d949b;min-width:260px;display:inline-block}
1
+ .tribe-editor__btn--label{background-color:transparent;border:none;padding:0;margin:0;text-align:left}.editor-styles-wrapper .tribe-editor__button{background-color:transparent;border:none;padding:0;margin:0;font-family:Helvetica,"sans-serif";cursor:pointer}.editor-styles-wrapper .tribe-editor__button--sm{background-color:#009fd4;color:#fff;padding:11px 16px 9px;font-size:15px;font-weight:700;line-height:18px;transition:background-color .2s ease}.editor-styles-wrapper .tribe-editor__button--sm:focus,.editor-styles-wrapper .tribe-editor__button--sm:hover{background-color:#007bb4}.editor-styles-wrapper .tribe-editor__button--sm[disabled],.editor-styles-wrapper .tribe-editor__button--sm[disabled]:focus,.editor-styles-wrapper .tribe-editor__button--sm[disabled]:hover{background-color:#f3f4f5;color:#8d949b}
2
  .tribe-editor__accordion__row-content{max-height:0;overflow:hidden}.tribe-editor__accordion__row-content.active{max-height:none}
3
  .editor-block-inspector__card .tribe-editor__icons__container{padding:4px;display:flex;align-items:center;justify-content:center}.editor-block-inspector__card .tribe-editor__icons__container svg{width:28px;height:28px}.editor-block-inspector__card .tribe-editor__icons--tec{background-color:#199fd1}button[class*=" editor-block-list-item-tribe-"] svg,button[class^=editor-block-list-item-tribe-] svg{color:#16a0d6}
4
  .tribe-editor__counter{display:flex;flex-direction:column;align-items:center}.tribe-editor__counter__count{flex:none;color:#aeb4bb;font-size:32px;font-weight:700;line-height:40px;margin-bottom:10px}.tribe-editor__counter__label{flex:none;color:#aeb4bb;font-size:12px;line-height:14px;letter-spacing:.04px}
5
+ .edit-post-visual-editor .editor-block-list__block .tribe-editor__image-upload__title{padding:0;margin:0 0 12px;color:#000;font-size:15px;font-weight:700;line-height:18px}.tribe-editor__image-upload__content{display:flex;justify-content:space-between;align-items:center}.tribe-editor__image-upload--has-image .tribe-editor__image-upload__content{align-items:flex-start}.tribe-editor__image-upload__content p.tribe-editor__image-upload__description{flex:none;width:52%;font-family:Helvetica,sans-serif;font-size:14px;color:#545d66;line-height:18px;margin:0}.tribe-editor__image-upload__upload-button{flex:none;margin-right:10px}.tribe-editor__image-upload__image-wrapper{flex:none;width:42%;max-width:325px;padding-left:25px;position:relative}.tribe-editor__image-upload__remove-button{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:8px;border-radius:50%;background-color:#f8f9fb}.tribe-editor__image-upload__remove-button>svg,.tribe-editor__image-upload__remove-button>svg path{fill:#545d66}.tribe-editor__image-upload__remove-button:focus>svg,.tribe-editor__image-upload__remove-button:focus>svg path,.tribe-editor__image-upload__remove-button:hover>svg,.tribe-editor__image-upload__remove-button:hover>svg path{fill:#009fd4}.tribe-editor__image-upload__remove-button:disabled:focus>svg,.tribe-editor__image-upload__remove-button:disabled:focus>svg path,.tribe-editor__image-upload__remove-button:disabled:hover>svg,.tribe-editor__image-upload__remove-button:disabled:hover>svg path,.tribe-editor__image-upload__remove-button:disabled>svg,.tribe-editor__image-upload__remove-button:disabled>svg path{fill:#aeb4bb}.tribe-editor__image-upload__remove-button-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
6
+ .tribe-editor__rsvp .tribe-editor__label-with-link,.tribe-editor__ticket .tribe-editor__label-with-link{display:flex;align-items:center;background-color:#fff;padding:10px 17px;border:1px solid #e1e3e6}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__labeled-item__label,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;padding-right:10px}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link{flex:none;color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;text-decoration:none;box-shadow:none;transition:color .2s ease}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover{color:#007bb4}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled{color:#aeb4bb}
7
  .tribe-editor__label-with-modal{display:flex;align-items:center;background-color:#fff;padding:11px 17px;border:1px solid #e1e3e6;height:40px}.tribe-editor__label-with-modal .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px}.tribe-editor__label-with-modal .tribe-editor__label-with-modal__modal-button{flex:none}.tribe-editor__label-with-modal .tribe-editor__modal-button__button{color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;transition:color .2s ease}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:hover{color:#007bb4}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:hover{color:#aeb4bb}
8
+ .tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit .editor-block-contextual-toolbar{display:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{outline:none}
9
  .tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}
10
  .tribe-editor__timepicker{display:inline-block}.tribe-editor__timepicker-label-container{background-color:#fff;border:1px solid #e1e3e6;padding-left:10px;border-radius:2px;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container input[type=time]{font-family:Noto Serif,serif;font-size:14px;padding:6px 0;border:none}.tribe-editor__timepicker-label-container input[type=time]::-webkit-clear-button{-webkit-appearance:none;display:none}.tribe-editor__timepicker-label-container input[type=time]:focus{box-shadow:none}.tribe-editor__timepicker-label-container button{background-color:#fefffe;color:#545d66;font-family:Helvetica,sans-serif;font-weight:400;line-height:1.5;padding:11px 10px 10px;text-decoration:none;border:none;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container button:disabled>svg.dashicon{fill:#aeb4bb}.tribe-editor__timepicker-label-container .tribe-editor__timepicker__all-day-btn{padding:6px 0}.tribe-editor__timepicker__dialog.components-popover .components-popover__content{min-width:110px}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items{height:250px;overflow:auto}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items .components-placeholder{height:inherit}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item{display:block;width:100%;color:#555d66;padding:5px 12px;cursor:pointer;border:0;border-bottom:1px solid #e2e4e7;line-height:20px;background:transparent;text-align:left}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current:not(:disabled):hover{color:#fff;background-color:#009fd4}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):hover{background-color:#e7f5fa}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled).is-active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):focus{position:relative}
11
+ .DayPicker{display:inline-block;font-size:1rem}.DayPicker-wrapper{position:relative;flex-direction:row;padding-bottom:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-Months{display:flex;flex-wrap:wrap;justify-content:center}.DayPicker-Month{display:table;margin:0 1em;margin-top:1em;border-spacing:0;border-collapse:collapse;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-NavButton{position:absolute;top:1em;right:1.5em;left:auto;display:inline-block;margin-top:2px;width:1.25em;height:1.25em;background-position:50%;background-size:50%;background-repeat:no-repeat;color:#8b9898;cursor:pointer}.DayPicker-NavButton:hover{opacity:.8}.DayPicker-NavButton--prev{margin-right:1.5em;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAVVJREFUWAnN2G0KgjAYwPHpGfRkaZeqvgQaK+hY3SUHrk1YzNLay/OiEFp92I+/Mp2F2Mh2lLISWnflFjzH263RQjzMZ19wgs73ez0o1WmtW+dgA01VxrE3p6l2GLsnBy1VYQOtVSEH/atCCgqpQgKKqYIOiq2CBkqtggLKqQIKgqgCBjpJ2Y5CdJ+zrT9A7HHSTA1dxUdHgzCqJIEwq0SDsKsEg6iqBIEoq/wEcVRZBXFV+QJxV5mBtlDFB5VjYTaGZ2sf4R9PM7U9ZU+lLuaetPP/5Die3ToO1+u+MKtHs06qODB2zBnI/jBd4MPQm1VkY79Tb18gB+C62FdBFsZR6yeIo1YQiLJWMIiqVjQIu1YSCLNWFgijVjYIuhYYCKoWKAiiFgoopxYaKLUWOii2FgkophYp6F3r42W5A9s9OcgNvva8xQaysKXlFytoqdYmQH6tF3toSUo0INq9AAAAAElFTkSuQmCC")}.DayPicker-NavButton--next{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAXRJREFUWAnN119ugjAcwPHWzJ1gnmxzB/BBE0n24m4xfNkTaOL7wOtsl3AXMMb+Vjaa1BG00N8fSEibPpAP3xAKKs2yjzTPH9RAjhEo9WzPr/Vm8zgE0+gXATAxxuxtqeJ9t5tIwv5AtQAApsfT6TPdbp+kUBcgVwvO51KqVhMkXKsVJFXrOkigVhCIs1Y4iKlWZxB1rX4gwlpRIIpa8SDkWmggrFq4IIRaJKCYWnSgnrXIQV1r8YD+1Vrn+bReagysIFfLABRt31v8oBu1xEBttfRbltmfjgEcWh9snUS2kNdBK6WN1vrOWxObWsz+fjxevsxmB1GQDfINWiev83nhaoiB/CoOU438oPrhXS0WpQ9xc1ZQWxWHqUYe0I0qrKCQKjygDlXIQV2r0IF6ViEBxVTBBSFUQQNhVYkHIVeJAtkNsbQ7c1LtzP6FsObhb2rCKv7NBIGoq4SDmKoEgTirXAcJVGkFSVVpgoSrXICGUMUH/QBZNSUy5XWUhwAAAABJRU5ErkJggg==")}.DayPicker-NavButton--interactionDisabled{display:none}.DayPicker-Caption{display:table-caption;margin-bottom:.5em;padding:0 .5em;text-align:left}.DayPicker-Caption>div{font-weight:500;font-size:1.15em}.DayPicker-Weekdays{display:table-header-group;margin-top:1em}.DayPicker-WeekdaysRow{display:table-row}.DayPicker-Weekday{display:table-cell;padding:.5em;color:#8b9898;text-align:center;font-size:.875em}.DayPicker-Weekday abbr[title]{border-bottom:none;text-decoration:none}.DayPicker-Body{display:table-row-group}.DayPicker-Week{display:table-row}.DayPicker-Day{border-radius:50%;text-align:center}.DayPicker-Day,.DayPicker-WeekNumber{display:table-cell;padding:.5em;vertical-align:middle;cursor:pointer}.DayPicker-WeekNumber{min-width:1em;border-right:1px solid #eaecec;color:#8b9898;text-align:right;font-size:.75em}.DayPicker--interactionDisabled .DayPicker-Day{cursor:default}.DayPicker-Footer{padding-top:.5em}.DayPicker-TodayButton{border:none;background-color:transparent;background-image:none;box-shadow:none;color:#4a90e2;font-size:.875em;cursor:pointer}.DayPicker-Day--today{color:#d0021b;font-weight:700}.DayPicker-Day--outside{color:#8b9898;cursor:default}.DayPicker-Day--disabled{color:#dce0e0;cursor:default}.DayPicker-Day--sunday{background-color:#f7f8f8}.DayPicker-Day--sunday:not(.DayPicker-Day--today){color:#dce0e0}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside){position:relative;background-color:#4a90e2;color:#f0f8ff}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside):hover{background-color:#51a0fa}.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#f0f8ff}.DayPickerInput{display:inline-block}.DayPickerInput-OverlayWrapper{position:relative}.DayPickerInput-Overlay{position:absolute;left:0;z-index:1;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.15)}
12
  .tribe-editor__day-picker-input.DayPickerInput>input{border:1px solid #e1e3e6;color:#545d66;font-size:16px;line-height:24px;padding:7px 15px;width:100%;height:40px}.tribe-editor__day-picker-input.DayPickerInput>input:disabled{color:#aeb4bb}.tribe-editor__day-picker-input .DayPickerInput-Overlay{padding:20px;z-index:10}.tribe-editor__day-picker-input .DayPicker{width:100%}.tribe-editor__day-picker-input .DayPicker-Month{margin:0}.tribe-editor__day-picker-input .DayPicker-Caption>div,.tribe-editor__day-picker-input .DayPicker-Day,.tribe-editor__day-picker-input .DayPicker-Weekday{color:#545d66;font-family:Helvetica,"sans-serif";font-weight:400}.tribe-editor__day-picker-input .DayPicker-Caption>div{font-size:16px;margin-bottom:12px;text-align:center}.tribe-editor__day-picker-input .DayPicker-Weekday{font-size:12px}.tribe-editor__day-picker-input .DayPicker-Day{font-size:14px}.tribe-editor__day-picker-input .DayPicker-Day:hover{color:#007bb4;background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--today{color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--disabled{pointer-events:none;color:#ccc}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside){border-radius:0;background-color:#009fd4;color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside):hover{background-color:#007bb4;color:#fff}.tribe-editor__day-picker-input .DayPicker-NavButton--prev{left:0;top:0}.tribe-editor__day-picker-input .DayPicker-NavButton--next{right:0;top:0}.tribe-editor__day-picker-input .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside){background-color:#e7f5fa;color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside):hover{color:#007bb4}
13
  .tribe-editor__creatable-select .tribe-editor__creatable-select__control{height:40px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__creatable-select .tribe-editor__creatable-select__control:hover{border:1px solid #e1e3e6}.tribe-editor__creatable-select .tribe-editor__creatable-select__control--is-focused{box-shadow:none}.tribe-editor__creatable-select .tribe-editor__creatable-select__value-container{padding:2px 5px 2px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input{font-size:16px}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input{margin:0;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input,.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input:focus{box-shadow:none}.tribe-editor__creatable-select svg.tribe-editor__creatable-select__dropdown-indicator{fill:#555d66}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu-list{padding:0}.tribe-editor__creatable-select .tribe-editor__creatable-select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-focused{background-color:#e7f5fa}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-selected{background-color:#11a0d2}
14
  .tribe-editor__placeholder{border:2px dashed #e1e3e6;padding:12px 15px 14px;text-align:center;font-family:Helvetica,Arial,"sans-serif";font-size:1rem;line-height:1.5;font-weight:700;color:#8d949b;min-width:260px;display:inline-block}
common/src/resources/css/app/elements.min.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://tribe.common.[name]/./src/modules/elements/button/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/accordion/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/block-icon/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/counter/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/image-upload/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/label-with-link/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/label-with-modal/style.pcss","webpack://tribe.common.[name]/./src/modules/components/plugin-block-hooks/style.pcss","webpack://tribe.common.[name]/./src/modules/components/form/select/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/time-picker/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/day-picker-input/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/creatable-select/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/placeholder/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/heading/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/paragraph/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/input/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/checkbox-input/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/select/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/style.pcss"],"names":[],"mappings":"AAAA,sBAAsB,eAAe,gDAAgD,6BAA6B,YAAY,UAAU,SAAS,0BAA0B,gBAAgB,0BAA0B,yBAAyB,WAAW,sBAAsB,eAAe,gBAAgB,iBAAiB,qCAAqC,gEAAgE,yBAAyB,wHAAwH,yBAAyB,c;ACA9kB,sCAAsC,aAAa,gBAAgB,6CAA6C,gB;ACAhH,8DAA8D,YAAY,aAAa,mBAAmB,uBAAuB,kEAAkE,WAAW,YAAY,wDAAwD,yBAAyB,qGAAqG,c;ACAhZ,uBAAuB,aAAa,sBAAsB,mBAAmB,8BAA8B,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,mBAAmB,8BAA8B,UAAU,cAAc,eAAe,iBAAiB,qB;ACA5R,mCAAmC,gBAAgB,WAAW,eAAe,gBAAgB,iBAAiB,qCAAqC,aAAa,8BAA8B,mBAAmB,4EAA4E,uBAAuB,+EAA+E,UAAU,UAAU,iCAAiC,eAAe,cAAc,iBAAiB,SAAS,2CAA2C,UAAU,kBAAkB,2CAA2C,UAAU,UAAU,gBAAgB,kBAAkB,kBAAkB,2CAA2C,kBAAkB,SAAS,WAAW,WAAW,YAAY,YAAY,kBAAkB,yBAAyB,mGAAmG,aAAa,8NAA8N,aAAa,uXAAuX,aAAa,gDAAgD,SAAS,mBAAmB,WAAW,YAAY,gBAAgB,UAAU,kBAAkB,U;ACAtrD,wGAAwG,aAAa,mBAAmB,sBAAsB,kBAAkB,yBAAyB,8KAA8K,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,mBAAmB,kLAAkL,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,qBAAqB,0BAA0B,4XAA4X,cAAc,8QAA8Q,c;ACA77C,gCAAgC,aAAa,mBAAmB,sBAAsB,kBAAkB,yBAAyB,YAAY,mEAAmE,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,8EAA8E,UAAU,oEAAoE,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,0BAA0B,oJAAoJ,cAAc,mPAAmP,c;ACA38B,iFAAiF,SAAS,2GAA2G,SAAS,yBAAyB,UAAU,6dAA6d,aAAa,0IAA0I,SAAS,4PAA4P,a;ACA1mC,0BAA0B,aAAa,8BAA8B,cAAc,gBAAgB,kCAAkC,sBAAsB,kBAAkB,yBAAyB,yCAAyC,mBAAmB,yBAAyB,YAAY,cAAc,aAAa,iCAAiC,eAAe,gBAAgB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,qBAAqB,WAAW,8CAA8C,OAAO,2CAA2C,uBAAuB,SAAS,cAAc,eAAe,cAAc,iBAAiB,iBAAiB,gBAAgB,WAAW,iDAAiD,yBAAyB,W;ACA5xB,0BAA0B,qBAAqB,0CAA0C,sBAAsB,yBAAyB,kBAAkB,kBAAkB,aAAa,mBAAmB,uBAAuB,2DAA2D,6BAA6B,eAAe,cAAc,YAAY,iFAAiF,wBAAwB,aAAa,iEAAiE,gBAAgB,iDAAiD,yBAAyB,cAAc,iCAAiC,gBAAgB,gBAAgB,uBAAuB,qBAAqB,YAAY,aAAa,mBAAmB,uBAAuB,uEAAuE,aAAa,iFAAiF,cAAc,kFAAkF,gBAAgB,mEAAmE,aAAa,cAAc,2FAA2F,eAAe,kEAAkE,cAAc,WAAW,cAAc,iBAAiB,eAAe,SAAS,gCAAgC,iBAAiB,uBAAuB,gBAAgB,2KAA2K,WAAW,yBAAyB,uFAAuF,yBAAyB,0QAA0Q,kB;ACAnkE,qDAAqD,yBAAyB,cAAc,eAAe,iBAAiB,iBAAiB,WAAW,YAAY,8DAA8D,cAAc,wDAAwD,aAAa,WAAW,2CAA2C,WAAW,iDAAiD,SAAS,yJAAyJ,cAAc,mCAAmC,gBAAgB,uDAAuD,eAAe,mBAAmB,kBAAkB,mDAAmD,eAAe,+CAA+C,eAAe,qDAAqD,cAAc,sBAAsB,sDAAsD,cAAc,yDAAyD,oBAAoB,WAAW,sFAAsF,gBAAgB,yBAAyB,WAAW,4FAA4F,yBAAyB,WAAW,2DAA2D,OAAO,MAAM,2DAA2D,QAAQ,MAAM,8LAA8L,sBAAsB,0IAA0I,yBAAyB,cAAc,gJAAgJ,c;ACA1hE,yEAAyE,YAAY,yBAAyB,kBAAkB,sBAAsB,+EAA+E,yBAAyB,qFAAqF,gBAAgB,iFAAiF,yBAAyB,8EAA8E,SAAS,4BAA4B,eAAe,gBAAgB,uEAAuE,eAAe,6EAA6E,SAAS,gBAAgB,gKAAgK,gBAAgB,uFAAuF,aAAa,sEAAsE,SAAS,yBAAyB,gBAAgB,gBAAgB,8BAA8B,+BAA+B,gBAAgB,mCAAmC,2BAA2B,2EAA2E,UAAU,wEAAwE,eAAe,gBAAgB,iBAAiB,oFAAoF,yBAAyB,qFAAqF,yB;ACAjtD,2BAA2B,0BAA0B,uBAAuB,kBAAkB,yCAAyC,eAAe,gBAAgB,gBAAgB,cAAc,gBAAgB,qB;ACApN,uBAAuB,yCAAyC,WAAW,2BAA2B,mBAAmB,2BAA2B,oBAAoB,2BAA2B,e;ACAnM,yBAAyB,yCAAyC,gBAAgB,gBAAgB,iCAAiC,eAAe,gCAAgC,kBAAkB,2BAA2B,cAAc,iCAAiC,qBAAqB,c;ACAnS,4EAA4E,WAAW,eAAe,iBAAiB,yBAAyB,iBAAiB,SAAS,YAAY,8FAA8F,c;ACApR,mDAAmD,sBAAsB,yBAAyB,gBAAgB,yDAAyD,yBAAyB,6BAA6B,2DAA2D,sBAAsB,yBAAyB,iEAAiE,yBAAyB,6BAA6B,kEAAkE,c;ACApgB,qDAAqD,YAAY,yBAAyB,kBAAkB,sBAAsB,2DAA2D,yBAAyB,iEAAiE,gBAAgB,6DAA6D,0BAA0B,0DAA0D,SAAS,4BAA4B,eAAe,gBAAgB,mDAAmD,eAAe,yDAAyD,SAAS,gBAAgB,mEAAmE,aAAa,kDAAkD,SAAS,yBAAyB,gBAAgB,gBAAgB,8BAA8B,+BAA+B,gBAAgB,mCAAmC,2BAA2B,uDAAuD,UAAU,oDAAoD,eAAe,gBAAgB,iBAAiB,gEAAgE,yBAAyB,iEAAiE,yBAAyB,gFAAgF,a;ACAv4C,+CAA+C,yB","file":"src/resources/css/app/elements.min.css","sourcesContent":[".tribe-editor__button{cursor:pointer}.tribe-editor__btn--label,.tribe-editor__button{background-color:transparent;border:none;padding:0;margin:0}.tribe-editor__btn--label{text-align:left}.tribe-editor__button--sm{background-color:#009fd4;color:#fff;padding:11px 16px 9px;font-size:15px;font-weight:700;line-height:18px;transition:background-color .2s ease}.tribe-editor__button--sm:focus,.tribe-editor__button--sm:hover{background-color:#007bb4}.tribe-editor__button--sm[disabled],.tribe-editor__button--sm[disabled]:focus,.tribe-editor__button--sm[disabled]:hover{background-color:#f3f4f5;color:#8d949b}",".tribe-editor__accordion__row-content{max-height:0;overflow:hidden}.tribe-editor__accordion__row-content.active{max-height:none}",".editor-block-inspector__card .tribe-editor__icons__container{padding:4px;display:flex;align-items:center;justify-content:center}.editor-block-inspector__card .tribe-editor__icons__container svg{width:28px;height:28px}.editor-block-inspector__card .tribe-editor__icons--tec{background-color:#199fd1}button[class*=\" editor-block-list-item-tribe-\"] svg,button[class^=editor-block-list-item-tribe-] svg{color:#16a0d6}",".tribe-editor__counter{display:flex;flex-direction:column;align-items:center}.tribe-editor__counter__count{flex:none;color:#aeb4bb;font-size:32px;font-weight:700;line-height:40px;margin-bottom:10px}.tribe-editor__counter__label{flex:none;color:#aeb4bb;font-size:12px;line-height:14px;letter-spacing:.04px}",".tribe-editor__image-upload__title{margin:0 0 12px;color:#000;font-size:15px;font-weight:700;line-height:18px}.tribe-editor__image-upload__content{display:flex;justify-content:space-between;align-items:center}.tribe-editor__image-upload--has-image .tribe-editor__image-upload__content{align-items:flex-start}.tribe-editor__image-upload__content p.tribe-editor__image-upload__description{flex:none;width:52%;font-family:Helvetica,sans-serif;font-size:14px;color:#545d66;line-height:18px;margin:0}.tribe-editor__image-upload__upload-button{flex:none;margin-right:10px}.tribe-editor__image-upload__image-wrapper{flex:none;width:42%;max-width:325px;padding-left:25px;position:relative}.tribe-editor__image-upload__remove-button{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:8px;border-radius:50%;background-color:#f8f9fb}.tribe-editor__image-upload__remove-button>svg,.tribe-editor__image-upload__remove-button>svg path{fill:#545d66}.tribe-editor__image-upload__remove-button:focus>svg,.tribe-editor__image-upload__remove-button:focus>svg path,.tribe-editor__image-upload__remove-button:hover>svg,.tribe-editor__image-upload__remove-button:hover>svg path{fill:#009fd4}.tribe-editor__image-upload__remove-button:disabled:focus>svg,.tribe-editor__image-upload__remove-button:disabled:focus>svg path,.tribe-editor__image-upload__remove-button:disabled:hover>svg,.tribe-editor__image-upload__remove-button:disabled:hover>svg path,.tribe-editor__image-upload__remove-button:disabled>svg,.tribe-editor__image-upload__remove-button:disabled>svg path{fill:#aeb4bb}.tribe-editor__image-upload__remove-button-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}",".tribe-editor__rsvp .tribe-editor__label-with-link,.tribe-editor__ticket .tribe-editor__label-with-link{display:flex;align-items:center;background-color:#fff;padding:10px 17px;border:1px solid #e1e3e6}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__labeled-item__label,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;padding-right:10px}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link{flex:none;color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;text-decoration:none;transition:color .2s ease}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover{color:#007bb4}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled{color:#aeb4bb}",".tribe-editor__label-with-modal{display:flex;align-items:center;background-color:#fff;padding:11px 17px;border:1px solid #e1e3e6;height:40px}.tribe-editor__label-with-modal .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px}.tribe-editor__label-with-modal .tribe-editor__label-with-modal__modal-button{flex:none}.tribe-editor__label-with-modal .tribe-editor__modal-button__button{color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;transition:color .2s ease}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:hover{color:#007bb4}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:hover{color:#aeb4bb}",".tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}",".tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}",".tribe-editor__timepicker{display:inline-block}.tribe-editor__timepicker-label-container{background-color:#fff;border:1px solid #e1e3e6;padding-left:10px;border-radius:2px;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container input[type=time]{font-family:Noto Serif,serif;font-size:14px;padding:6px 0;border:none}.tribe-editor__timepicker-label-container input[type=time]::-webkit-clear-button{-webkit-appearance:none;display:none}.tribe-editor__timepicker-label-container input[type=time]:focus{box-shadow:none}.tribe-editor__timepicker-label-container button{background-color:#fefffe;color:#545d66;font-family:Helvetica,sans-serif;font-weight:400;line-height:1.5;padding:11px 10px 10px;text-decoration:none;border:none;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container button:disabled>svg.dashicon{fill:#aeb4bb}.tribe-editor__timepicker-label-container .tribe-editor__timepicker__all-day-btn{padding:6px 0}.tribe-editor__timepicker__dialog.components-popover .components-popover__content{min-width:110px}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items{height:250px;overflow:auto}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items .components-placeholder{height:inherit}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item{display:block;width:100%;color:#555d66;padding:5px 12px;cursor:pointer;border:0;border-bottom:1px solid #e2e4e7;line-height:20px;background:transparent;text-align:left}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current:not(:disabled):hover{color:#fff;background-color:#009fd4}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):hover{background-color:#e7f5fa}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled).is-active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):focus{position:relative}",".tribe-editor__day-picker-input.DayPickerInput>input{border:1px solid #e1e3e6;color:#545d66;font-size:16px;line-height:24px;padding:7px 15px;width:100%;height:40px}.tribe-editor__day-picker-input.DayPickerInput>input:disabled{color:#aeb4bb}.tribe-editor__day-picker-input .DayPickerInput-Overlay{padding:20px;z-index:10}.tribe-editor__day-picker-input .DayPicker{width:100%}.tribe-editor__day-picker-input .DayPicker-Month{margin:0}.tribe-editor__day-picker-input .DayPicker-Caption>div,.tribe-editor__day-picker-input .DayPicker-Day,.tribe-editor__day-picker-input .DayPicker-Weekday{color:#545d66;font-family:Helvetica,\"sans-serif\";font-weight:400}.tribe-editor__day-picker-input .DayPicker-Caption>div{font-size:16px;margin-bottom:12px;text-align:center}.tribe-editor__day-picker-input .DayPicker-Weekday{font-size:12px}.tribe-editor__day-picker-input .DayPicker-Day{font-size:14px}.tribe-editor__day-picker-input .DayPicker-Day:hover{color:#007bb4;background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--today{color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--disabled{pointer-events:none;color:#ccc}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside){border-radius:0;background-color:#009fd4;color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside):hover{background-color:#007bb4;color:#fff}.tribe-editor__day-picker-input .DayPicker-NavButton--prev{left:0;top:0}.tribe-editor__day-picker-input .DayPicker-NavButton--next{right:0;top:0}.tribe-editor__day-picker-input .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside){background-color:#e7f5fa;color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside):hover{color:#007bb4}",".tribe-editor__creatable-select .tribe-editor__creatable-select__control{height:40px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__creatable-select .tribe-editor__creatable-select__control:hover{border:1px solid #e1e3e6}.tribe-editor__creatable-select .tribe-editor__creatable-select__control--is-focused{box-shadow:none}.tribe-editor__creatable-select .tribe-editor__creatable-select__value-container{padding:2px 5px 2px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input{font-size:16px}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input{margin:0;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input,.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input:focus{box-shadow:none}.tribe-editor__creatable-select svg.tribe-editor__creatable-select__dropdown-indicator{fill:#555d66}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu-list{padding:0}.tribe-editor__creatable-select .tribe-editor__creatable-select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-focused{background-color:#e7f5fa}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-selected{background-color:#11a0d2}",".tribe-editor__placeholder{border:2px dashed #e1e3e6;padding:12px 15px 14px;text-align:center;font-family:Helvetica,Arial,\"sans-serif\";font-size:1rem;line-height:1.5;font-weight:700;color:#8d949b;min-width:260px;display:inline-block}",".tribe-editor__heading{font-family:Helvetica,Arial,\"sans-serif\";color:#000}.tribe-editor__heading--h1{font-size:2.375rem}.tribe-editor__heading--h2{font-size:1.3125rem}.tribe-editor__heading--h3{font-size:1rem}",".tribe-editor__paragraph{font-family:Helvetica,Arial,\"sans-serif\";line-height:1.5;font-weight:400}.tribe-editor__paragraph--medium{font-size:1rem}.tribe-editor__paragraph--small{font-size:.875rem}.tribe-editor__paragraph a{color:#11a0d2}.tribe-editor__paragraph a:hover{text-decoration:none;color:#007bb4}","input.tribe-editor__input[type=number],input.tribe-editor__input[type=text]{color:#000;font-size:16px;line-height:24px;border:1px solid #e1e3e6;padding:7px 15px;margin:0;height:40px}input.tribe-editor__input[type=number]:disabled,input.tribe-editor__input[type=text]:disabled{color:#aeb4bb}","input[type=checkbox].tribe-editor__input--checkbox{background-color:#fff;border:1px solid #e0e5e9;border-radius:0}input[type=checkbox].tribe-editor__input--checkbox:focus{border:1px solid #e0e5e9;box-shadow:0 0 0 1px #e0e5e9}input[type=checkbox].tribe-editor__input--checkbox:checked{background-color:#fff;border:1px solid #e0e5e9}input[type=checkbox].tribe-editor__input--checkbox:checked:focus{border:1px solid #e0e5e9;box-shadow:0 0 0 1px #e0e5e9}input[type=checkbox].tribe-editor__input--checkbox:checked:before{color:#11a0d2}",".tribe-editor__select .tribe-editor__select__control{height:46px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__select .tribe-editor__select__control:hover{border:1px solid #e1e3e6}.tribe-editor__select .tribe-editor__select__control--is-focused{box-shadow:none}.tribe-editor__select .tribe-editor__select__value-container{padding:2px 10px 2px 15px}.tribe-editor__select .tribe-editor__select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__select .tribe-editor__select__input{font-size:16px}.tribe-editor__select .tribe-editor__select__input>input{margin:0;line-height:1.5}.tribe-editor__select svg.tribe-editor__select__dropdown-indicator{fill:#555d66}.tribe-editor__select .tribe-editor__select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__select .tribe-editor__select__menu-list{padding:0}.tribe-editor__select .tribe-editor__select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__select .tribe-editor__select__option--is-focused{background-color:#e7f5fa}.tribe-editor__select .tribe-editor__select__option--is-selected{background-color:#11a0d2}.tribe-editor__select--is-disabled svg.tribe-editor__select__dropdown-indicator{fill:#aeb4bb}",".post-type-tribe_events .editor-styles-wrapper{max-width:none!important}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://tribe.common.[name]/./src/modules/elements/button/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/accordion/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/block-icon/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/counter/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/image-upload/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/label-with-link/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/label-with-modal/style.pcss","webpack://tribe.common.[name]/./src/modules/components/plugin-block-hooks/style.pcss","webpack://tribe.common.[name]/./src/modules/components/form/select/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/time-picker/style.pcss","webpack://tribe.common.[name]/./node_modules/react-day-picker/lib/style.css","webpack://tribe.common.[name]/./src/modules/elements/day-picker-input/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/creatable-select/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/placeholder/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/heading/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/paragraph/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/input/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/checkbox-input/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/select/style.pcss","webpack://tribe.common.[name]/./src/modules/elements/style.pcss"],"names":[],"mappings":"AAAA,0BAA0B,6BAA6B,YAAY,UAAU,SAAS,gBAAgB,6CAA6C,6BAA6B,YAAY,UAAU,SAAS,mCAAmC,eAAe,iDAAiD,yBAAyB,WAAW,sBAAsB,eAAe,gBAAgB,iBAAiB,qCAAqC,8GAA8G,yBAAyB,6LAA6L,yBAAyB,c;ACA9xB,sCAAsC,aAAa,gBAAgB,6CAA6C,gB;ACAhH,8DAA8D,YAAY,aAAa,mBAAmB,uBAAuB,kEAAkE,WAAW,YAAY,wDAAwD,yBAAyB,qGAAqG,c;ACAhZ,uBAAuB,aAAa,sBAAsB,mBAAmB,8BAA8B,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,mBAAmB,8BAA8B,UAAU,cAAc,eAAe,iBAAiB,qB;ACA5R,sFAAsF,UAAU,gBAAgB,WAAW,eAAe,gBAAgB,iBAAiB,qCAAqC,aAAa,8BAA8B,mBAAmB,4EAA4E,uBAAuB,+EAA+E,UAAU,UAAU,iCAAiC,eAAe,cAAc,iBAAiB,SAAS,2CAA2C,UAAU,kBAAkB,2CAA2C,UAAU,UAAU,gBAAgB,kBAAkB,kBAAkB,2CAA2C,kBAAkB,SAAS,WAAW,WAAW,YAAY,YAAY,kBAAkB,yBAAyB,mGAAmG,aAAa,8NAA8N,aAAa,uXAAuX,aAAa,gDAAgD,SAAS,mBAAmB,WAAW,YAAY,gBAAgB,UAAU,kBAAkB,U;ACAnvD,wGAAwG,aAAa,mBAAmB,sBAAsB,kBAAkB,yBAAyB,8KAA8K,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,mBAAmB,kLAAkL,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,qBAAqB,gBAAgB,0BAA0B,4XAA4X,cAAc,8QAA8Q,c;ACA78C,gCAAgC,aAAa,mBAAmB,sBAAsB,kBAAkB,yBAAyB,YAAY,mEAAmE,UAAU,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,8EAA8E,UAAU,oEAAoE,cAAc,eAAe,gBAAgB,iBAAiB,qBAAqB,0BAA0B,oJAAoJ,cAAc,mPAAmP,c;ACA38B,iFAAiF,SAAS,2GAA2G,SAAS,yBAAyB,UAAU,6dAA6d,aAAa,0IAA0I,SAAS,iJAAiJ,aAAa,2KAA2K,aAAa,2GAA2G,a;ACA/yC,0BAA0B,aAAa,8BAA8B,cAAc,gBAAgB,kCAAkC,sBAAsB,kBAAkB,yBAAyB,yCAAyC,mBAAmB,yBAAyB,YAAY,cAAc,aAAa,iCAAiC,eAAe,gBAAgB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,qBAAqB,WAAW,8CAA8C,OAAO,2CAA2C,uBAAuB,SAAS,cAAc,eAAe,cAAc,iBAAiB,iBAAiB,gBAAgB,WAAW,iDAAiD,yBAAyB,W;ACA5xB,0BAA0B,qBAAqB,0CAA0C,sBAAsB,yBAAyB,kBAAkB,kBAAkB,aAAa,mBAAmB,uBAAuB,2DAA2D,6BAA6B,eAAe,cAAc,YAAY,iFAAiF,wBAAwB,aAAa,iEAAiE,gBAAgB,iDAAiD,yBAAyB,cAAc,iCAAiC,gBAAgB,gBAAgB,uBAAuB,qBAAqB,YAAY,aAAa,mBAAmB,uBAAuB,uEAAuE,aAAa,iFAAiF,cAAc,kFAAkF,gBAAgB,mEAAmE,aAAa,cAAc,2FAA2F,eAAe,kEAAkE,cAAc,WAAW,cAAc,iBAAiB,eAAe,SAAS,gCAAgC,iBAAiB,uBAAuB,gBAAgB,2KAA2K,WAAW,yBAAyB,uFAAuF,yBAAyB,0QAA0Q,kB;ACAnkE,WAAW,qBAAqB,eAAe,mBAAmB,kBAAkB,mBAAmB,mBAAmB,yBAAyB,sBAAsB,qBAAqB,iBAAiB,kBAAkB,aAAa,eAAe,uBAAuB,iBAAiB,cAAc,aAAa,eAAe,iBAAiB,yBAAyB,yBAAyB,sBAAsB,qBAAqB,iBAAiB,qBAAqB,kBAAkB,QAAQ,YAAY,UAAU,qBAAqB,eAAe,aAAa,cAAc,wBAAwB,oBAAoB,4BAA4B,cAAc,eAAe,2BAA2B,WAAW,2BAA2B,mBAAmB,qCAAqC,kjBAAkjB,2BAA2B,qCAAqC,8lBAA8lB,0CAA0C,aAAa,mBAAmB,sBAAsB,mBAAmB,eAAe,gBAAgB,uBAAuB,gBAAgB,iBAAiB,oBAAoB,2BAA2B,eAAe,uBAAuB,kBAAkB,mBAAmB,mBAAmB,aAAa,cAAc,kBAAkB,iBAAiB,+BAA+B,mBAAmB,qBAAqB,gBAAgB,wBAAwB,gBAAgB,kBAAkB,eAAe,kBAAkB,kBAAkB,qCAAqC,mBAAmB,aAAa,sBAAsB,eAAe,sBAAsB,cAAc,+BAA+B,cAAc,iBAAiB,gBAAgB,+CAA+C,eAAe,kBAAkB,iBAAiB,uBAAuB,YAAY,6BAA6B,sBAAsB,gBAAgB,cAAc,iBAAiB,eAAe,sBAAsB,cAAc,gBAAgB,wBAAwB,cAAc,eAAe,yBAAyB,cAAc,eAAe,uBAAuB,yBAAyB,kDAAkD,cAAc,oFAAoF,kBAAkB,yBAAyB,cAAc,0FAA0F,yBAAyB,8JAA8J,yBAAyB,gBAAgB,qBAAqB,+BAA+B,kBAAkB,wBAAwB,kBAAkB,OAAO,UAAU,gBAAgB,qC;ACAj5H,qDAAqD,yBAAyB,cAAc,eAAe,iBAAiB,iBAAiB,WAAW,YAAY,8DAA8D,cAAc,wDAAwD,aAAa,WAAW,2CAA2C,WAAW,iDAAiD,SAAS,yJAAyJ,cAAc,mCAAmC,gBAAgB,uDAAuD,eAAe,mBAAmB,kBAAkB,mDAAmD,eAAe,+CAA+C,eAAe,qDAAqD,cAAc,sBAAsB,sDAAsD,cAAc,yDAAyD,oBAAoB,WAAW,sFAAsF,gBAAgB,yBAAyB,WAAW,4FAA4F,yBAAyB,WAAW,2DAA2D,OAAO,MAAM,2DAA2D,QAAQ,MAAM,8LAA8L,sBAAsB,0IAA0I,yBAAyB,cAAc,gJAAgJ,c;ACA1hE,yEAAyE,YAAY,yBAAyB,kBAAkB,sBAAsB,+EAA+E,yBAAyB,qFAAqF,gBAAgB,iFAAiF,yBAAyB,8EAA8E,SAAS,4BAA4B,eAAe,gBAAgB,uEAAuE,eAAe,6EAA6E,SAAS,gBAAgB,gKAAgK,gBAAgB,uFAAuF,aAAa,sEAAsE,SAAS,yBAAyB,gBAAgB,gBAAgB,8BAA8B,+BAA+B,gBAAgB,mCAAmC,2BAA2B,2EAA2E,UAAU,wEAAwE,eAAe,gBAAgB,iBAAiB,oFAAoF,yBAAyB,qFAAqF,yB;ACAjtD,2BAA2B,0BAA0B,uBAAuB,kBAAkB,yCAAyC,eAAe,gBAAgB,gBAAgB,cAAc,gBAAgB,qB;ACApN,uBAAuB,yCAAyC,WAAW,2BAA2B,mBAAmB,2BAA2B,oBAAoB,2BAA2B,e;ACAnM,yBAAyB,yCAAyC,gBAAgB,gBAAgB,iCAAiC,eAAe,gCAAgC,kBAAkB,2BAA2B,cAAc,iCAAiC,qBAAqB,c;ACAnS,4EAA4E,WAAW,eAAe,iBAAiB,yBAAyB,iBAAiB,SAAS,YAAY,8FAA8F,c;ACApR,mDAAmD,sBAAsB,yBAAyB,gBAAgB,yDAAyD,yBAAyB,6BAA6B,2DAA2D,sBAAsB,yBAAyB,iEAAiE,yBAAyB,6BAA6B,kEAAkE,c;ACApgB,qDAAqD,YAAY,yBAAyB,kBAAkB,sBAAsB,2DAA2D,yBAAyB,iEAAiE,gBAAgB,6DAA6D,0BAA0B,0DAA0D,SAAS,4BAA4B,eAAe,gBAAgB,mDAAmD,eAAe,yDAAyD,SAAS,gBAAgB,mEAAmE,aAAa,kDAAkD,SAAS,yBAAyB,gBAAgB,gBAAgB,8BAA8B,+BAA+B,gBAAgB,mCAAmC,2BAA2B,uDAAuD,UAAU,oDAAoD,eAAe,gBAAgB,iBAAiB,gEAAgE,yBAAyB,iEAAiE,yBAAyB,gFAAgF,a;ACAv4C,+CAA+C,yB","file":"src/resources/css/app/elements.min.css","sourcesContent":[".tribe-editor__btn--label{background-color:transparent;border:none;padding:0;margin:0;text-align:left}.editor-styles-wrapper .tribe-editor__button{background-color:transparent;border:none;padding:0;margin:0;font-family:Helvetica,\"sans-serif\";cursor:pointer}.editor-styles-wrapper .tribe-editor__button--sm{background-color:#009fd4;color:#fff;padding:11px 16px 9px;font-size:15px;font-weight:700;line-height:18px;transition:background-color .2s ease}.editor-styles-wrapper .tribe-editor__button--sm:focus,.editor-styles-wrapper .tribe-editor__button--sm:hover{background-color:#007bb4}.editor-styles-wrapper .tribe-editor__button--sm[disabled],.editor-styles-wrapper .tribe-editor__button--sm[disabled]:focus,.editor-styles-wrapper .tribe-editor__button--sm[disabled]:hover{background-color:#f3f4f5;color:#8d949b}",".tribe-editor__accordion__row-content{max-height:0;overflow:hidden}.tribe-editor__accordion__row-content.active{max-height:none}",".editor-block-inspector__card .tribe-editor__icons__container{padding:4px;display:flex;align-items:center;justify-content:center}.editor-block-inspector__card .tribe-editor__icons__container svg{width:28px;height:28px}.editor-block-inspector__card .tribe-editor__icons--tec{background-color:#199fd1}button[class*=\" editor-block-list-item-tribe-\"] svg,button[class^=editor-block-list-item-tribe-] svg{color:#16a0d6}",".tribe-editor__counter{display:flex;flex-direction:column;align-items:center}.tribe-editor__counter__count{flex:none;color:#aeb4bb;font-size:32px;font-weight:700;line-height:40px;margin-bottom:10px}.tribe-editor__counter__label{flex:none;color:#aeb4bb;font-size:12px;line-height:14px;letter-spacing:.04px}",".edit-post-visual-editor .editor-block-list__block .tribe-editor__image-upload__title{padding:0;margin:0 0 12px;color:#000;font-size:15px;font-weight:700;line-height:18px}.tribe-editor__image-upload__content{display:flex;justify-content:space-between;align-items:center}.tribe-editor__image-upload--has-image .tribe-editor__image-upload__content{align-items:flex-start}.tribe-editor__image-upload__content p.tribe-editor__image-upload__description{flex:none;width:52%;font-family:Helvetica,sans-serif;font-size:14px;color:#545d66;line-height:18px;margin:0}.tribe-editor__image-upload__upload-button{flex:none;margin-right:10px}.tribe-editor__image-upload__image-wrapper{flex:none;width:42%;max-width:325px;padding-left:25px;position:relative}.tribe-editor__image-upload__remove-button{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:8px;border-radius:50%;background-color:#f8f9fb}.tribe-editor__image-upload__remove-button>svg,.tribe-editor__image-upload__remove-button>svg path{fill:#545d66}.tribe-editor__image-upload__remove-button:focus>svg,.tribe-editor__image-upload__remove-button:focus>svg path,.tribe-editor__image-upload__remove-button:hover>svg,.tribe-editor__image-upload__remove-button:hover>svg path{fill:#009fd4}.tribe-editor__image-upload__remove-button:disabled:focus>svg,.tribe-editor__image-upload__remove-button:disabled:focus>svg path,.tribe-editor__image-upload__remove-button:disabled:hover>svg,.tribe-editor__image-upload__remove-button:disabled:hover>svg path,.tribe-editor__image-upload__remove-button:disabled>svg,.tribe-editor__image-upload__remove-button:disabled>svg path{fill:#aeb4bb}.tribe-editor__image-upload__remove-button-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}",".tribe-editor__rsvp .tribe-editor__label-with-link,.tribe-editor__ticket .tribe-editor__label-with-link{display:flex;align-items:center;background-color:#fff;padding:10px 17px;border:1px solid #e1e3e6}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__labeled-item__label,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;padding-right:10px}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link{flex:none;color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;text-decoration:none;box-shadow:none;transition:color .2s ease}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:focus,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link:hover{color:#007bb4}.tribe-editor__rsvp .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled,.tribe-editor__ticket .tribe-editor__label-with-link .tribe-editor__label-with-link__link.tribe-editor__label-with-link__link--disabled{color:#aeb4bb}",".tribe-editor__label-with-modal{display:flex;align-items:center;background-color:#fff;padding:11px 17px;border:1px solid #e1e3e6;height:40px}.tribe-editor__label-with-modal .tribe-editor__labeled-item__label{flex:auto;color:#545d66;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px}.tribe-editor__label-with-modal .tribe-editor__label-with-modal__modal-button{flex:none}.tribe-editor__label-with-modal .tribe-editor__modal-button__button{color:#009fd4;font-size:15px;font-weight:700;line-height:18px;letter-spacing:.38px;transition:color .2s ease}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:hover{color:#007bb4}.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:focus,.tribe-editor__label-with-modal .tribe-editor__modal-button__button:disabled:hover{color:#aeb4bb}",".tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{margin:0;max-width:100%!important;padding:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-hovered>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected-parent>.editor-block-list__block-edit:before,.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block.is-selected>.editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit{margin:0}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit:before{outline:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block .editor-block-list__block-edit .editor-block-contextual-toolbar{display:none}.tribe-common__plugin-block-hook .editor-inner-blocks .editor-block-list__layout .editor-block-list__block{outline:none}",".tribe-common-form-select{display:flex}.tribe-common-form-select>div{flex:0 0 auto;min-width:193px}.tribe-common-form-select__toggle{background-color:#fff;border-radius:2px;border:2px solid #eaebec}.tribe-common-form-select__toggle button{align-items:center;background-color:#fefffe;border:none;color:#545d66;display:flex;font-family:Helvetica,sans-serif;font-size:16px;font-weight:400;justify-content:center;line-height:1.5;padding:6px 10px;text-align:left;text-decoration:none;width:100%}.tribe-common-form-select__toggle button>span{flex:1}.tribe-common-form-select__options__option{background:transparent;border:0;color:#555d66;cursor:pointer;display:block;line-height:20px;padding:5px 12px;text-align:left;width:100%}.tribe-common-form-select__options__option:hover{background-color:#009fd4;color:#fff}",".tribe-editor__timepicker{display:inline-block}.tribe-editor__timepicker-label-container{background-color:#fff;border:1px solid #e1e3e6;padding-left:10px;border-radius:2px;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container input[type=time]{font-family:Noto Serif,serif;font-size:14px;padding:6px 0;border:none}.tribe-editor__timepicker-label-container input[type=time]::-webkit-clear-button{-webkit-appearance:none;display:none}.tribe-editor__timepicker-label-container input[type=time]:focus{box-shadow:none}.tribe-editor__timepicker-label-container button{background-color:#fefffe;color:#545d66;font-family:Helvetica,sans-serif;font-weight:400;line-height:1.5;padding:11px 10px 10px;text-decoration:none;border:none;display:flex;align-items:center;justify-content:center}.tribe-editor__timepicker-label-container button:disabled>svg.dashicon{fill:#aeb4bb}.tribe-editor__timepicker-label-container .tribe-editor__timepicker__all-day-btn{padding:6px 0}.tribe-editor__timepicker__dialog.components-popover .components-popover__content{min-width:110px}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items{height:250px;overflow:auto}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__items .components-placeholder{height:inherit}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item{display:block;width:100%;color:#555d66;padding:5px 12px;cursor:pointer;border:0;border-bottom:1px solid #e2e4e7;line-height:20px;background:transparent;text-align:left}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item--current:not(:disabled):hover{color:#fff;background-color:#009fd4}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):hover{background-color:#e7f5fa}.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled).is-active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):active,.tribe-editor__timepicker__dialog .tribe-editor__timepicker__item:not(:disabled):focus{position:relative}",".DayPicker{display:inline-block;font-size:1rem}.DayPicker-wrapper{position:relative;flex-direction:row;padding-bottom:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-Months{display:flex;flex-wrap:wrap;justify-content:center}.DayPicker-Month{display:table;margin:0 1em;margin-top:1em;border-spacing:0;border-collapse:collapse;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-NavButton{position:absolute;top:1em;right:1.5em;left:auto;display:inline-block;margin-top:2px;width:1.25em;height:1.25em;background-position:50%;background-size:50%;background-repeat:no-repeat;color:#8b9898;cursor:pointer}.DayPicker-NavButton:hover{opacity:.8}.DayPicker-NavButton--prev{margin-right:1.5em;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAVVJREFUWAnN2G0KgjAYwPHpGfRkaZeqvgQaK+hY3SUHrk1YzNLay/OiEFp92I+/Mp2F2Mh2lLISWnflFjzH263RQjzMZ19wgs73ez0o1WmtW+dgA01VxrE3p6l2GLsnBy1VYQOtVSEH/atCCgqpQgKKqYIOiq2CBkqtggLKqQIKgqgCBjpJ2Y5CdJ+zrT9A7HHSTA1dxUdHgzCqJIEwq0SDsKsEg6iqBIEoq/wEcVRZBXFV+QJxV5mBtlDFB5VjYTaGZ2sf4R9PM7U9ZU+lLuaetPP/5Die3ToO1+u+MKtHs06qODB2zBnI/jBd4MPQm1VkY79Tb18gB+C62FdBFsZR6yeIo1YQiLJWMIiqVjQIu1YSCLNWFgijVjYIuhYYCKoWKAiiFgoopxYaKLUWOii2FgkophYp6F3r42W5A9s9OcgNvva8xQaysKXlFytoqdYmQH6tF3toSUo0INq9AAAAAElFTkSuQmCC\")}.DayPicker-NavButton--next{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAXRJREFUWAnN119ugjAcwPHWzJ1gnmxzB/BBE0n24m4xfNkTaOL7wOtsl3AXMMb+Vjaa1BG00N8fSEibPpAP3xAKKs2yjzTPH9RAjhEo9WzPr/Vm8zgE0+gXATAxxuxtqeJ9t5tIwv5AtQAApsfT6TPdbp+kUBcgVwvO51KqVhMkXKsVJFXrOkigVhCIs1Y4iKlWZxB1rX4gwlpRIIpa8SDkWmggrFq4IIRaJKCYWnSgnrXIQV1r8YD+1Vrn+bReagysIFfLABRt31v8oBu1xEBttfRbltmfjgEcWh9snUS2kNdBK6WN1vrOWxObWsz+fjxevsxmB1GQDfINWiev83nhaoiB/CoOU438oPrhXS0WpQ9xc1ZQWxWHqUYe0I0qrKCQKjygDlXIQV2r0IF6ViEBxVTBBSFUQQNhVYkHIVeJAtkNsbQ7c1LtzP6FsObhb2rCKv7NBIGoq4SDmKoEgTirXAcJVGkFSVVpgoSrXICGUMUH/QBZNSUy5XWUhwAAAABJRU5ErkJggg==\")}.DayPicker-NavButton--interactionDisabled{display:none}.DayPicker-Caption{display:table-caption;margin-bottom:.5em;padding:0 .5em;text-align:left}.DayPicker-Caption>div{font-weight:500;font-size:1.15em}.DayPicker-Weekdays{display:table-header-group;margin-top:1em}.DayPicker-WeekdaysRow{display:table-row}.DayPicker-Weekday{display:table-cell;padding:.5em;color:#8b9898;text-align:center;font-size:.875em}.DayPicker-Weekday abbr[title]{border-bottom:none;text-decoration:none}.DayPicker-Body{display:table-row-group}.DayPicker-Week{display:table-row}.DayPicker-Day{border-radius:50%;text-align:center}.DayPicker-Day,.DayPicker-WeekNumber{display:table-cell;padding:.5em;vertical-align:middle;cursor:pointer}.DayPicker-WeekNumber{min-width:1em;border-right:1px solid #eaecec;color:#8b9898;text-align:right;font-size:.75em}.DayPicker--interactionDisabled .DayPicker-Day{cursor:default}.DayPicker-Footer{padding-top:.5em}.DayPicker-TodayButton{border:none;background-color:transparent;background-image:none;box-shadow:none;color:#4a90e2;font-size:.875em;cursor:pointer}.DayPicker-Day--today{color:#d0021b;font-weight:700}.DayPicker-Day--outside{color:#8b9898;cursor:default}.DayPicker-Day--disabled{color:#dce0e0;cursor:default}.DayPicker-Day--sunday{background-color:#f7f8f8}.DayPicker-Day--sunday:not(.DayPicker-Day--today){color:#dce0e0}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside){position:relative;background-color:#4a90e2;color:#f0f8ff}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside):hover{background-color:#51a0fa}.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#f0f8ff}.DayPickerInput{display:inline-block}.DayPickerInput-OverlayWrapper{position:relative}.DayPickerInput-Overlay{position:absolute;left:0;z-index:1;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.15)}",".tribe-editor__day-picker-input.DayPickerInput>input{border:1px solid #e1e3e6;color:#545d66;font-size:16px;line-height:24px;padding:7px 15px;width:100%;height:40px}.tribe-editor__day-picker-input.DayPickerInput>input:disabled{color:#aeb4bb}.tribe-editor__day-picker-input .DayPickerInput-Overlay{padding:20px;z-index:10}.tribe-editor__day-picker-input .DayPicker{width:100%}.tribe-editor__day-picker-input .DayPicker-Month{margin:0}.tribe-editor__day-picker-input .DayPicker-Caption>div,.tribe-editor__day-picker-input .DayPicker-Day,.tribe-editor__day-picker-input .DayPicker-Weekday{color:#545d66;font-family:Helvetica,\"sans-serif\";font-weight:400}.tribe-editor__day-picker-input .DayPicker-Caption>div{font-size:16px;margin-bottom:12px;text-align:center}.tribe-editor__day-picker-input .DayPicker-Weekday{font-size:12px}.tribe-editor__day-picker-input .DayPicker-Day{font-size:14px}.tribe-editor__day-picker-input .DayPicker-Day:hover{color:#007bb4;background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--today{color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--disabled{pointer-events:none;color:#ccc}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside){border-radius:0;background-color:#009fd4;color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--outside):hover{background-color:#007bb4;color:#fff}.tribe-editor__day-picker-input .DayPicker-NavButton--prev{left:0;top:0}.tribe-editor__day-picker-input .DayPicker-NavButton--next{right:0;top:0}.tribe-editor__day-picker-input .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#fff}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside){background-color:#e7f5fa;color:#545d66}.tribe-editor__day-picker-input .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside):hover{color:#007bb4}",".tribe-editor__creatable-select .tribe-editor__creatable-select__control{height:40px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__creatable-select .tribe-editor__creatable-select__control:hover{border:1px solid #e1e3e6}.tribe-editor__creatable-select .tribe-editor__creatable-select__control--is-focused{box-shadow:none}.tribe-editor__creatable-select .tribe-editor__creatable-select__value-container{padding:2px 5px 2px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input{font-size:16px}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input{margin:0;line-height:1.5}.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input,.tribe-editor__creatable-select .tribe-editor__creatable-select__input>input:focus{box-shadow:none}.tribe-editor__creatable-select svg.tribe-editor__creatable-select__dropdown-indicator{fill:#555d66}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__creatable-select .tribe-editor__creatable-select__menu-list{padding:0}.tribe-editor__creatable-select .tribe-editor__creatable-select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-focused{background-color:#e7f5fa}.tribe-editor__creatable-select .tribe-editor__creatable-select__option--is-selected{background-color:#11a0d2}",".tribe-editor__placeholder{border:2px dashed #e1e3e6;padding:12px 15px 14px;text-align:center;font-family:Helvetica,Arial,\"sans-serif\";font-size:1rem;line-height:1.5;font-weight:700;color:#8d949b;min-width:260px;display:inline-block}",".tribe-editor__heading{font-family:Helvetica,Arial,\"sans-serif\";color:#000}.tribe-editor__heading--h1{font-size:2.375rem}.tribe-editor__heading--h2{font-size:1.3125rem}.tribe-editor__heading--h3{font-size:1rem}",".tribe-editor__paragraph{font-family:Helvetica,Arial,\"sans-serif\";line-height:1.5;font-weight:400}.tribe-editor__paragraph--medium{font-size:1rem}.tribe-editor__paragraph--small{font-size:.875rem}.tribe-editor__paragraph a{color:#11a0d2}.tribe-editor__paragraph a:hover{text-decoration:none;color:#007bb4}","input.tribe-editor__input[type=number],input.tribe-editor__input[type=text]{color:#000;font-size:16px;line-height:24px;border:1px solid #e1e3e6;padding:7px 15px;margin:0;height:40px}input.tribe-editor__input[type=number]:disabled,input.tribe-editor__input[type=text]:disabled{color:#aeb4bb}","input[type=checkbox].tribe-editor__input--checkbox{background-color:#fff;border:1px solid #e0e5e9;border-radius:0}input[type=checkbox].tribe-editor__input--checkbox:focus{border:1px solid #e0e5e9;box-shadow:0 0 0 1px #e0e5e9}input[type=checkbox].tribe-editor__input--checkbox:checked{background-color:#fff;border:1px solid #e0e5e9}input[type=checkbox].tribe-editor__input--checkbox:checked:focus{border:1px solid #e0e5e9;box-shadow:0 0 0 1px #e0e5e9}input[type=checkbox].tribe-editor__input--checkbox:checked:before{color:#11a0d2}",".tribe-editor__select .tribe-editor__select__control{height:46px;border:1px solid #e1e3e6;border-radius:3px;background-color:#fff}.tribe-editor__select .tribe-editor__select__control:hover{border:1px solid #e1e3e6}.tribe-editor__select .tribe-editor__select__control--is-focused{box-shadow:none}.tribe-editor__select .tribe-editor__select__value-container{padding:2px 10px 2px 15px}.tribe-editor__select .tribe-editor__select__single-value{margin:0;max-width:calc(100% - 15px);font-size:16px;line-height:1.5}.tribe-editor__select .tribe-editor__select__input{font-size:16px}.tribe-editor__select .tribe-editor__select__input>input{margin:0;line-height:1.5}.tribe-editor__select svg.tribe-editor__select__dropdown-indicator{fill:#555d66}.tribe-editor__select .tribe-editor__select__menu{margin:0;border:1px solid #e1e3e6;border-top:none;border-radius:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:none;-webkit-transform:translateY(-7px);transform:translateY(-7px)}.tribe-editor__select .tribe-editor__select__menu-list{padding:0}.tribe-editor__select .tribe-editor__select__option{font-size:16px;line-height:1.5;padding:3px 15px}.tribe-editor__select .tribe-editor__select__option--is-focused{background-color:#e7f5fa}.tribe-editor__select .tribe-editor__select__option--is-selected{background-color:#11a0d2}.tribe-editor__select--is-disabled svg.tribe-editor__select__dropdown-indicator{fill:#aeb4bb}",".post-type-tribe_events .editor-styles-wrapper{max-width:none!important}"],"sourceRoot":""}
common/src/resources/css/bumpdown.css CHANGED
@@ -14,15 +14,14 @@
14
  .tribe-bumpdown,
15
  .tribe-bumpdown-cell.tribe-bumpdown {
16
  display: none;
17
- margin: 16px 0;
18
  margin: 1rem 0;
19
  }
20
  .wrap .tribe-bumpdown .tribe-bumpdown-content, .tribe-bumpdown .tribe-bumpdown-content, .tribe-bumpdown-cell.tribe-bumpdown .tribe-bumpdown-content {
21
- background: #f1f1f1;
22
- padding: 10px 35px 10px 10px;
23
- font-size: 12px;
24
- position: relative;
25
- }
26
  .tribe-bumpdown-cell.tribe-bumpdown {
27
  padding: 0;
28
  }
@@ -52,9 +51,7 @@
52
  color: #686868;
53
  cursor: pointer;
54
  position: absolute;
55
- right: 8px;
56
  right: .5rem;
57
- top: 8px;
58
  top: .5rem;
59
  z-index: 2;
60
  }
@@ -65,6 +62,7 @@
65
  .wrap td.tribe-bumpdown {
66
  padding-right: 35px;
67
  }
 
68
  .tribe-bumpdown-arrow {
69
  margin-left: -15px;
70
  }
14
  .tribe-bumpdown,
15
  .tribe-bumpdown-cell.tribe-bumpdown {
16
  display: none;
 
17
  margin: 1rem 0;
18
  }
19
  .wrap .tribe-bumpdown .tribe-bumpdown-content, .tribe-bumpdown .tribe-bumpdown-content, .tribe-bumpdown-cell.tribe-bumpdown .tribe-bumpdown-content {
20
+ background: #f1f1f1;
21
+ padding: 10px 35px 10px 10px;
22
+ font-size: 12px;
23
+ position: relative;
24
+ }
25
  .tribe-bumpdown-cell.tribe-bumpdown {
26
  padding: 0;
27
  }
51
  color: #686868;
52
  cursor: pointer;
53
  position: absolute;
 
54
  right: .5rem;
 
55
  top: .5rem;
56
  z-index: 2;
57
  }
62
  .wrap td.tribe-bumpdown {
63
  padding-right: 35px;
64
  }
65
+
66
  .tribe-bumpdown-arrow {
67
  margin-left: -15px;
68
  }
common/src/resources/css/bumpdown.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-bumpdown,.tribe-bumpdown-cell.tribe-bumpdown,.wrap .tribe-bumpdown{display:none;margin:16px 0;margin:1rem 0}.tribe-bumpdown-cell.tribe-bumpdown .tribe-bumpdown-content,.tribe-bumpdown .tribe-bumpdown-content,.wrap .tribe-bumpdown .tribe-bumpdown-content{background:#f1f1f1;padding:10px 35px 10px 10px;font-size:12px;position:relative}.tribe-bumpdown-cell.tribe-bumpdown{padding:0}#poststuff .tribe-bumpdown h1,#poststuff .tribe-bumpdown h2,#poststuff .tribe-bumpdown h3,#poststuff .tribe-bumpdown h4,.tribe-bumpdown h1,.tribe-bumpdown h2,.tribe-bumpdown h3,.tribe-bumpdown h4{padding-left:0;padding-top:0}.tribe-bumpdown-arrow{position:absolute;width:0;height:0;top:-11px;margin-left:-18px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:11px solid #f1f1f1}.tribe-bumpdown-close{color:#686868;cursor:pointer;position:absolute;right:8px;right:.5rem;top:8px;top:.5rem;z-index:2}.tribe-bumpdown-trigger .target{color:#0074a2}@media screen and (max-width:782px){.wrap td.tribe-bumpdown{padding-right:35px}.tribe-bumpdown-arrow{margin-left:-15px}}
1
+ .tribe-bumpdown,.tribe-bumpdown-cell.tribe-bumpdown,.wrap .tribe-bumpdown{display:none;margin:1rem 0}.tribe-bumpdown-cell.tribe-bumpdown .tribe-bumpdown-content,.tribe-bumpdown .tribe-bumpdown-content,.wrap .tribe-bumpdown .tribe-bumpdown-content{background:#f1f1f1;padding:10px 35px 10px 10px;font-size:12px;position:relative}.tribe-bumpdown-cell.tribe-bumpdown{padding:0}#poststuff .tribe-bumpdown h1,#poststuff .tribe-bumpdown h2,#poststuff .tribe-bumpdown h3,#poststuff .tribe-bumpdown h4,.tribe-bumpdown h1,.tribe-bumpdown h2,.tribe-bumpdown h3,.tribe-bumpdown h4{padding-left:0;padding-top:0}.tribe-bumpdown-arrow{position:absolute;width:0;height:0;top:-11px;margin-left:-18px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:11px solid #f1f1f1}.tribe-bumpdown-close{color:#686868;cursor:pointer;position:absolute;right:.5rem;top:.5rem;z-index:2}.tribe-bumpdown-trigger .target{color:#0074a2}@media screen and (max-width:782px){.wrap td.tribe-bumpdown{padding-right:35px}.tribe-bumpdown-arrow{margin-left:-15px}}
common/src/resources/css/buttonset.css CHANGED
@@ -9,8 +9,8 @@
9
  */
10
 
11
  .tribe-buttonset .tribe-button-field {
12
- background-color: #f7f7f7;
13
- }
14
 
15
  .tribe-button-field {
16
  color: #444;
@@ -33,7 +33,7 @@
33
  }
34
 
35
  .tribe-button-field.tribe-active {
36
- color: #fff;
37
- background-color: #585858;
38
- border-color: #585858;
39
- }
9
  */
10
 
11
  .tribe-buttonset .tribe-button-field {
12
+ background-color: #f7f7f7;
13
+ }
14
 
15
  .tribe-button-field {
16
  color: #444;
33
  }
34
 
35
  .tribe-button-field.tribe-active {
36
+ color: #fff;
37
+ background-color: #585858;
38
+ border-color: #585858;
39
+ }
common/src/resources/css/datatables.css CHANGED
@@ -20,207 +20,207 @@ table.dataTable {
20
  }
21
  table.dataTable thead th:active,
22
  table.dataTable thead td:active {
23
- outline: none;
24
- }
25
  table.dataTable thead .sorting,
26
  table.dataTable thead .sorting_asc,
27
  table.dataTable thead .sorting_desc {
28
- cursor: pointer;
29
- cursor: hand;
30
- }
31
  table.dataTable thead .sorting,
32
  table.dataTable thead .sorting_asc,
33
  table.dataTable thead .sorting_desc,
34
  table.dataTable thead .sorting_asc_disabled,
35
  table.dataTable thead .sorting_desc_disabled {
36
- background-position: center right;
37
- background-repeat: no-repeat;
38
- }
39
  table.dataTable thead .sorting {
40
- background-image: url("../../../vendor/datatables/DataTables/images/sort_both.png");
41
- }
42
  table.dataTable thead .sorting_asc {
43
- background-image: url("../../../vendor/datatables/DataTables/images/sort_asc.png");
44
- }
45
  table.dataTable thead .sorting_desc {
46
- background-image: url("../../../vendor/datatables/DataTables/images/sort_desc.png");
47
- }
48
  table.dataTable thead .sorting_asc_disabled {
49
- background-image: url("../../../vendor/datatables/DataTables/images/sort_asc_disabled.png");
50
- }
51
  table.dataTable thead .sorting_desc_disabled {
52
- background-image: url("../../../vendor/datatables/DataTables/images/sort_desc_disabled.png");
53
- }
54
  table.dataTable.widefat thead th input, table.dataTable.widefat thead td input, table.dataTable.widefat tfoot th input, table.dataTable.widefat tfoot td input {
55
- margin: 0 0 0 8px;
56
- vertical-align: text-top;
57
- }
58
  table.dataTable.widefat thead td.check-column, table.dataTable.widefat tfoot td.check-column {
59
- padding-top: 4px;
60
- vertical-align: middle;
61
- }
62
  table.dataTable.widefat thead th.check-column, table.dataTable.widefat tfoot th.check-column, table.dataTable.widefat tbody th.check-column {
63
- padding: 11px 0 0 3px;
64
- }
65
  table.dataTable .check-column {
66
- width: 2.2em;
67
- }
68
  table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
69
- border-top: 1px solid #ddd;
70
- }
71
  table.dataTable.row-border tbody tr:first-child th,
72
  table.dataTable.row-border tbody tr:first-child td,
73
  table.dataTable.display tbody tr:first-child th,
74
  table.dataTable.display tbody tr:first-child td {
75
- border-top: none;
76
- }
77
  table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
78
- border-top: 1px solid #ddd;
79
- border-right: 1px solid #ddd;
80
- }
81
  table.dataTable.cell-border tbody tr th:first-child,
82
  table.dataTable.cell-border tbody tr td:first-child {
83
- border-left: 1px solid #ddd;
84
- }
85
  table.dataTable.cell-border tbody tr:first-child th,
86
  table.dataTable.cell-border tbody tr:first-child td {
87
- border-top: none;
88
- }
89
  table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
90
- background-color: #f9f9f9;
91
- }
92
  table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
93
- background-color: #f6f6f6;
94
- }
95
  table.dataTable.order-column tbody tr > .sorting_1,
96
  table.dataTable.order-column tbody tr > .sorting_2,
97
  table.dataTable.order-column tbody tr > .sorting_3,
98
  table.dataTable.display tbody tr > .sorting_1,
99
  table.dataTable.display tbody tr > .sorting_2,
100
  table.dataTable.display tbody tr > .sorting_3 {
101
- background-color: #fafafa;
102
- }
103
  table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
104
- background-color: #f1f1f1;
105
- }
106
  table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
107
- background-color: #f3f3f3;
108
- }
109
  table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
110
- background-color: whitesmoke;
111
- }
112
  table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
113
- background-color: #fafafa;
114
- }
115
  table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
116
- background-color: #fcfcfc;
117
- }
118
  table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
119
- background-color: #fefefe;
120
- }
121
  table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
122
- background-color: #eaeaea;
123
- }
124
  table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
125
- background-color: #ececec;
126
- }
127
  table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
128
- background-color: #efefef;
129
- }
130
  table.dataTable.no-footer {
131
- border-bottom: 1px solid #111;
132
- }
133
  table.dataTable.nowrap th, table.dataTable.nowrap td {
134
- white-space: nowrap;
135
- }
136
  table.dataTable.compact thead th,
137
  table.dataTable.compact thead td {
138
- padding: 4px 17px 4px 4px;
139
- }
140
  table.dataTable.compact tfoot th,
141
  table.dataTable.compact tfoot td {
142
- padding: 4px;
143
- }
144
  table.dataTable.compact tbody th,
145
  table.dataTable.compact tbody td {
146
- padding: 4px;
147
- }
148
  table.dataTable th.dt-left,
149
  table.dataTable td.dt-left {
150
- text-align: left;
151
- }
152
  table.dataTable th.dt-center,
153
  table.dataTable td.dt-center,
154
  table.dataTable td.dataTables_empty {
155
- text-align: center;
156
- }
157
  table.dataTable th.dt-right,
158
  table.dataTable td.dt-right {
159
- text-align: right;
160
- }
161
  table.dataTable th.dt-justify,
162
  table.dataTable td.dt-justify {
163
- text-align: justify;
164
- }
165
  table.dataTable th.dt-nowrap,
166
  table.dataTable td.dt-nowrap {
167
- white-space: nowrap;
168
- }
169
  table.dataTable thead th.dt-head-left,
170
  table.dataTable thead td.dt-head-left,
171
  table.dataTable tfoot th.dt-head-left,
172
  table.dataTable tfoot td.dt-head-left {
173
- text-align: left;
174
- }
175
  table.dataTable thead th.dt-head-center,
176
  table.dataTable thead td.dt-head-center,
177
  table.dataTable tfoot th.dt-head-center,
178
  table.dataTable tfoot td.dt-head-center {
179
- text-align: center;
180
- }
181
  table.dataTable thead th.dt-head-right,
182
  table.dataTable thead td.dt-head-right,
183
  table.dataTable tfoot th.dt-head-right,
184
  table.dataTable tfoot td.dt-head-right {
185
- text-align: right;
186
- }
187
  table.dataTable thead th.dt-head-justify,
188
  table.dataTable thead td.dt-head-justify,
189
  table.dataTable tfoot th.dt-head-justify,
190
  table.dataTable tfoot td.dt-head-justify {
191
- text-align: justify;
192
- }
193
  table.dataTable thead th.dt-head-nowrap,
194
  table.dataTable thead td.dt-head-nowrap,
195
  table.dataTable tfoot th.dt-head-nowrap,
196
  table.dataTable tfoot td.dt-head-nowrap {
197
- white-space: nowrap;
198
- }
199
  table.dataTable tbody th.dt-body-left,
200
  table.dataTable tbody td.dt-body-left {
201
- text-align: left;
202
- }
203
  table.dataTable tbody th.dt-body-center,
204
  table.dataTable tbody td.dt-body-center {
205
- text-align: center;
206
- }
207
  table.dataTable tbody th.dt-body-right,
208
  table.dataTable tbody td.dt-body-right {
209
- text-align: right;
210
- }
211
  table.dataTable tbody th.dt-body-justify,
212
  table.dataTable tbody td.dt-body-justify {
213
- text-align: justify;
214
- }
215
  table.dataTable tbody th.dt-body-nowrap,
216
  table.dataTable tbody td.dt-body-nowrap {
217
- white-space: nowrap;
218
- }
219
  table.dataTable,
220
  table.dataTable th,
221
  table.dataTable td {
222
- box-sizing: content-box;
223
- }
224
  /*
225
  * Control feature layout
226
  */
@@ -230,152 +230,154 @@ table.dataTable,
230
  zoom: 1;
231
  }
232
  .dataTables_wrapper .dataTables_length {
233
- float: left;
234
- }
235
  .dataTables_wrapper .dataTables_filter {
236
- float: right;
237
- text-align: right;
238
- }
239
  .dataTables_wrapper .dataTables_filter input {
240
- margin-left: 0.5em;
241
- }
242
  .dataTables_wrapper .dataTables_info {
243
- clear: both;
244
- float: left;
245
- padding-top: 0.755em;
246
- }
247
  .dataTables_wrapper .dataTables_paginate {
248
- float: right;
249
- padding-top: 0.25em;
250
- text-align: right;
251
- }
252
  .dataTables_wrapper .dataTables_paginate .paginate_button {
253
- border-color: transparent;
254
- border-radius: 3px;
255
- border-style: solid;
256
- border-width: 1px;
257
- box-shadow: none;
258
- box-sizing: border-box;
259
- color: #555;
260
- cursor: pointer;
261
- display: inline-block;
262
- font-size: 13px;
263
- height: 28px;
264
- line-height: 26px;
265
- margin: 0 0 0 2px;
266
- padding: 0 10px 1px;
267
- text-decoration: none;
268
- vertical-align: top;
269
- white-space: nowrap;
270
- }
271
  .dataTables_wrapper .dataTables_paginate .paginate_button:hover,
272
  .dataTables_wrapper .dataTables_paginate .paginate_button:active {
273
- background: #fafafa;
274
- border-color: #999;
275
- color: #23282d;
276
- }
277
  .dataTables_wrapper .dataTables_paginate .paginate_button.next,
278
  .dataTables_wrapper .dataTables_paginate .paginate_button.previous {
279
- background: transparent;
280
- border-color: transparent;
281
- box-shadow: none;
282
- color: #23282d;
283
- }
284
  .dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled {
285
- background: transparent;
286
- border-color: transparent;
287
- box-shadow: none;
288
- }
289
  .dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled:hover {
290
- background: transparent;
291
- border-color: transparent;
292
- box-shadow: none;
293
- text-decoration: none;
294
- }
295
  .dataTables_wrapper .dataTables_paginate .paginate_button.next:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.previous:hover {
296
- color: #222;
297
- text-decoration: underline;
298
- }
299
  .dataTables_wrapper .dataTables_paginate .paginate_button.current,
300
  .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
301
- background: #fcfcfc;
302
- border-color: #999;
303
- box-shadow: 0 1px 0 #cccccc;
304
- color: #23282d;
305
- text-decoration: none;
306
- }
307
  .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
308
  .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,
309
  .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
310
- background: #f7f7f7;
311
- border-color: #ddd;
312
- box-shadow: none;
313
- color: #a0a5aa;
314
- cursor: default;
315
- text-shadow: 0 1px 0 #fff;
316
- transform: none;
317
- }
 
318
  .dataTables_wrapper .dataTables_paginate .ellipsis {
319
- padding: 0 1em;
320
- }
321
  .dataTables_wrapper .dataTables_processing {
322
- position: absolute;
323
- top: 50%;
324
- left: 50%;
325
- width: 100%;
326
- height: 40px;
327
- margin-left: -50%;
328
- margin-top: -25px;
329
- padding-top: 20px;
330
- text-align: center;
331
- font-size: 1.2em;
332
- background-color: white;
333
- background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .9) 25%, rgba(255, 255, 255, .9) 75%, rgba(255, 255, 255, 0) 100%);
334
- }
335
  .dataTables_wrapper .dataTables_length,
336
  .dataTables_wrapper .dataTables_filter,
337
  .dataTables_wrapper .dataTables_info,
338
  .dataTables_wrapper .dataTables_processing,
339
  .dataTables_wrapper .dataTables_paginate {
340
- color: #333;
341
- }
342
  .dataTables_wrapper .dataTables_scroll {
343
- clear: both;
344
- }
345
  .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
346
- margin-top: -1px;
347
- -webkit-overflow-scrolling: touch;
348
- }
349
  .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td {
350
- vertical-align: middle;
351
- }
352
  .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing,
353
  .dataTables_wrapper .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing {
354
- height: 0;
355
- overflow: hidden;
356
- margin: 0 !important;
357
- padding: 0 !important;
358
- }
359
  .dataTables_wrapper.no-footer .dataTables_scrollBody {
360
- border-bottom: 1px solid #111;
361
- }
362
  .dataTables_wrapper.no-footer div.dataTables_scrollHead table,
363
  .dataTables_wrapper.no-footer div.dataTables_scrollBody table {
364
- border-bottom: none;
365
- }
366
  .dataTables_wrapper:after {
367
- visibility: hidden;
368
- display: block;
369
- content: "";
370
- clear: both;
371
- height: 0;
372
- }
373
  @media screen and (max-width: 767px) {
374
  .dataTables_wrapper .dataTables_info,
375
  .dataTables_wrapper .dataTables_paginate {
376
  float: none;
377
  text-align: center;
378
  }
 
379
  .dataTables_wrapper .dataTables_paginate {
380
  margin-top: 0.5em;
381
  }
@@ -386,6 +388,7 @@ table.dataTable,
386
  float: none;
387
  text-align: center;
388
  }
 
389
  .dataTables_wrapper .dataTables_filter {
390
  margin-top: 0.5em;
391
  }
20
  }
21
  table.dataTable thead th:active,
22
  table.dataTable thead td:active {
23
+ outline: none;
24
+ }
25
  table.dataTable thead .sorting,
26
  table.dataTable thead .sorting_asc,
27
  table.dataTable thead .sorting_desc {
28
+ cursor: pointer;
29
+ *cursor: hand;
30
+ }
31
  table.dataTable thead .sorting,
32
  table.dataTable thead .sorting_asc,
33
  table.dataTable thead .sorting_desc,
34
  table.dataTable thead .sorting_asc_disabled,
35
  table.dataTable thead .sorting_desc_disabled {
36
+ background-position: center right;
37
+ background-repeat: no-repeat;
38
+ }
39
  table.dataTable thead .sorting {
40
+ background-image: url("../../../vendor/datatables/DataTables/images/sort_both.png");
41
+ }
42
  table.dataTable thead .sorting_asc {
43
+ background-image: url("../../../vendor/datatables/DataTables/images/sort_asc.png");
44
+ }
45
  table.dataTable thead .sorting_desc {
46
+ background-image: url("../../../vendor/datatables/DataTables/images/sort_desc.png");
47
+ }
48
  table.dataTable thead .sorting_asc_disabled {
49
+ background-image: url("../../../vendor/datatables/DataTables/images/sort_asc_disabled.png");
50
+ }
51
  table.dataTable thead .sorting_desc_disabled {
52
+ background-image: url("../../../vendor/datatables/DataTables/images/sort_desc_disabled.png");
53
+ }
54
  table.dataTable.widefat thead th input, table.dataTable.widefat thead td input, table.dataTable.widefat tfoot th input, table.dataTable.widefat tfoot td input {
55
+ margin: 0 0 0 8px;
56
+ vertical-align: text-top;
57
+ }
58
  table.dataTable.widefat thead td.check-column, table.dataTable.widefat tfoot td.check-column {
59
+ padding-top: 4px;
60
+ vertical-align: middle;
61
+ }
62
  table.dataTable.widefat thead th.check-column, table.dataTable.widefat tfoot th.check-column, table.dataTable.widefat tbody th.check-column {
63
+ padding: 11px 0 0 3px;
64
+ }
65
  table.dataTable .check-column {
66
+ width: 2.2em;
67
+ }
68
  table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
69
+ border-top: 1px solid #ddd;
70
+ }
71
  table.dataTable.row-border tbody tr:first-child th,
72
  table.dataTable.row-border tbody tr:first-child td,
73
  table.dataTable.display tbody tr:first-child th,
74
  table.dataTable.display tbody tr:first-child td {
75
+ border-top: none;
76
+ }
77
  table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
78
+ border-top: 1px solid #ddd;
79
+ border-right: 1px solid #ddd;
80
+ }
81
  table.dataTable.cell-border tbody tr th:first-child,
82
  table.dataTable.cell-border tbody tr td:first-child {
83
+ border-left: 1px solid #ddd;
84
+ }
85
  table.dataTable.cell-border tbody tr:first-child th,
86
  table.dataTable.cell-border tbody tr:first-child td {
87
+ border-top: none;
88
+ }
89
  table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
90
+ background-color: #f9f9f9;
91
+ }
92
  table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
93
+ background-color: #f6f6f6;
94
+ }
95
  table.dataTable.order-column tbody tr > .sorting_1,
96
  table.dataTable.order-column tbody tr > .sorting_2,
97
  table.dataTable.order-column tbody tr > .sorting_3,
98
  table.dataTable.display tbody tr > .sorting_1,
99
  table.dataTable.display tbody tr > .sorting_2,
100
  table.dataTable.display tbody tr > .sorting_3 {
101
+ background-color: #fafafa;
102
+ }
103
  table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
104
+ background-color: #f1f1f1;
105
+ }
106
  table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
107
+ background-color: #f3f3f3;
108
+ }
109
  table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
110
+ background-color: whitesmoke;
111
+ }
112
  table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
113
+ background-color: #fafafa;
114
+ }
115
  table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
116
+ background-color: #fcfcfc;
117
+ }
118
  table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
119
+ background-color: #fefefe;
120
+ }
121
  table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
122
+ background-color: #eaeaea;
123
+ }
124
  table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
125
+ background-color: #ececec;
126
+ }
127
  table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
128
+ background-color: #efefef;
129
+ }
130
  table.dataTable.no-footer {
131
+ border-bottom: 1px solid #111;
132
+ }
133
  table.dataTable.nowrap th, table.dataTable.nowrap td {
134
+ white-space: nowrap;
135
+ }
136
  table.dataTable.compact thead th,
137
  table.dataTable.compact thead td {
138
+ padding: 4px 17px 4px 4px;
139
+ }
140
  table.dataTable.compact tfoot th,
141
  table.dataTable.compact tfoot td {
142
+ padding: 4px;
143
+ }
144
  table.dataTable.compact tbody th,
145
  table.dataTable.compact tbody td {
146
+ padding: 4px;
147
+ }
148
  table.dataTable th.dt-left,
149
  table.dataTable td.dt-left {
150
+ text-align: left;
151
+ }
152
  table.dataTable th.dt-center,
153
  table.dataTable td.dt-center,
154
  table.dataTable td.dataTables_empty {
155
+ text-align: center;
156
+ }
157
  table.dataTable th.dt-right,
158
  table.dataTable td.dt-right {
159
+ text-align: right;
160
+ }
161
  table.dataTable th.dt-justify,
162
  table.dataTable td.dt-justify {
163
+ text-align: justify;
164
+ }
165
  table.dataTable th.dt-nowrap,
166
  table.dataTable td.dt-nowrap {
167
+ white-space: nowrap;
168
+ }
169
  table.dataTable thead th.dt-head-left,
170
  table.dataTable thead td.dt-head-left,
171
  table.dataTable tfoot th.dt-head-left,
172
  table.dataTable tfoot td.dt-head-left {
173
+ text-align: left;
174
+ }
175
  table.dataTable thead th.dt-head-center,
176
  table.dataTable thead td.dt-head-center,
177
  table.dataTable tfoot th.dt-head-center,
178
  table.dataTable tfoot td.dt-head-center {
179
+ text-align: center;
180
+ }
181
  table.dataTable thead th.dt-head-right,
182
  table.dataTable thead td.dt-head-right,
183
  table.dataTable tfoot th.dt-head-right,
184
  table.dataTable tfoot td.dt-head-right {
185
+ text-align: right;
186
+ }
187
  table.dataTable thead th.dt-head-justify,
188
  table.dataTable thead td.dt-head-justify,
189
  table.dataTable tfoot th.dt-head-justify,
190
  table.dataTable tfoot td.dt-head-justify {
191
+ text-align: justify;
192
+ }
193
  table.dataTable thead th.dt-head-nowrap,
194
  table.dataTable thead td.dt-head-nowrap,
195
  table.dataTable tfoot th.dt-head-nowrap,
196
  table.dataTable tfoot td.dt-head-nowrap {
197
+ white-space: nowrap;
198
+ }
199
  table.dataTable tbody th.dt-body-left,
200
  table.dataTable tbody td.dt-body-left {
201
+ text-align: left;
202
+ }
203
  table.dataTable tbody th.dt-body-center,
204
  table.dataTable tbody td.dt-body-center {
205
+ text-align: center;
206
+ }
207
  table.dataTable tbody th.dt-body-right,
208
  table.dataTable tbody td.dt-body-right {
209
+ text-align: right;
210
+ }
211
  table.dataTable tbody th.dt-body-justify,
212
  table.dataTable tbody td.dt-body-justify {
213
+ text-align: justify;
214
+ }
215
  table.dataTable tbody th.dt-body-nowrap,
216
  table.dataTable tbody td.dt-body-nowrap {
217
+ white-space: nowrap;
218
+ }
219
  table.dataTable,
220
  table.dataTable th,
221
  table.dataTable td {
222
+ box-sizing: content-box;
223
+ }
224
  /*
225
  * Control feature layout
226
  */
230
  zoom: 1;
231
  }
232
  .dataTables_wrapper .dataTables_length {
233
+ float: left;
234
+ }
235
  .dataTables_wrapper .dataTables_filter {
236
+ float: right;
237
+ text-align: right;
238
+ }
239
  .dataTables_wrapper .dataTables_filter input {
240
+ margin-left: 0.5em;
241
+ }
242
  .dataTables_wrapper .dataTables_info {
243
+ clear: both;
244
+ float: left;
245
+ padding-top: 0.755em;
246
+ }
247
  .dataTables_wrapper .dataTables_paginate {
248
+ float: right;
249
+ padding-top: 0.25em;
250
+ text-align: right;
251
+ }
252
  .dataTables_wrapper .dataTables_paginate .paginate_button {
253
+ border-color: transparent;
254
+ border-radius: 3px;
255
+ border-style: solid;
256
+ border-width: 1px;
257
+ box-shadow: none;
258
+ box-sizing: border-box;
259
+ color: #555;
260
+ cursor: pointer;
261
+ display: inline-block;
262
+ font-size: 13px;
263
+ height: 28px;
264
+ line-height: 26px;
265
+ margin: 0 0 0 2px;
266
+ padding: 0 10px 1px;
267
+ text-decoration: none;
268
+ vertical-align: top;
269
+ white-space: nowrap;
270
+ }
271
  .dataTables_wrapper .dataTables_paginate .paginate_button:hover,
272
  .dataTables_wrapper .dataTables_paginate .paginate_button:active {
273
+ background: #fafafa;
274
+ border-color: #999;
275
+ color: #23282d;
276
+ }
277
  .dataTables_wrapper .dataTables_paginate .paginate_button.next,
278
  .dataTables_wrapper .dataTables_paginate .paginate_button.previous {
279
+ background: transparent;
280
+ border-color: transparent;
281
+ box-shadow: none;
282
+ color: #23282d;
283
+ }
284
  .dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled {
285
+ background: transparent;
286
+ border-color: transparent;
287
+ box-shadow: none;
288
+ }
289
  .dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled:hover {
290
+ background: transparent;
291
+ border-color: transparent;
292
+ box-shadow: none;
293
+ text-decoration: none;
294
+ }
295
  .dataTables_wrapper .dataTables_paginate .paginate_button.next:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.previous:hover {
296
+ color: #222;
297
+ text-decoration: underline;
298
+ }
299
  .dataTables_wrapper .dataTables_paginate .paginate_button.current,
300
  .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
301
+ background: #fcfcfc;
302
+ border-color: #999;
303
+ box-shadow: 0 1px 0 #cccccc;
304
+ color: #23282d;
305
+ text-decoration: none;
306
+ }
307
  .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
308
  .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,
309
  .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
310
+ background: #f7f7f7;
311
+ border-color: #ddd;
312
+ box-shadow: none;
313
+ color: #a0a5aa;
314
+ cursor: default;
315
+ text-shadow: 0 1px 0 #fff;
316
+ -webkit-transform: none;
317
+ transform: none;
318
+ }
319
  .dataTables_wrapper .dataTables_paginate .ellipsis {
320
+ padding: 0 1em;
321
+ }
322
  .dataTables_wrapper .dataTables_processing {
323
+ position: absolute;
324
+ top: 50%;
325
+ left: 50%;
326
+ width: 100%;
327
+ height: 40px;
328
+ margin-left: -50%;
329
+ margin-top: -25px;
330
+ padding-top: 20px;
331
+ text-align: center;
332
+ font-size: 1.2em;
333
+ background-color: white;
334
+ background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
335
+ }
336
  .dataTables_wrapper .dataTables_length,
337
  .dataTables_wrapper .dataTables_filter,
338
  .dataTables_wrapper .dataTables_info,
339
  .dataTables_wrapper .dataTables_processing,
340
  .dataTables_wrapper .dataTables_paginate {
341
+ color: #333;
342
+ }
343
  .dataTables_wrapper .dataTables_scroll {
344
+ clear: both;
345
+ }
346
  .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
347
+ *margin-top: -1px;
348
+ -webkit-overflow-scrolling: touch;
349
+ }
350
  .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td {
351
+ vertical-align: middle;
352
+ }
353
  .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing,
354
  .dataTables_wrapper .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing {
355
+ height: 0;
356
+ overflow: hidden;
357
+ margin: 0 !important;
358
+ padding: 0 !important;
359
+ }
360
  .dataTables_wrapper.no-footer .dataTables_scrollBody {
361
+ border-bottom: 1px solid #111;
362
+ }
363
  .dataTables_wrapper.no-footer div.dataTables_scrollHead table,
364
  .dataTables_wrapper.no-footer div.dataTables_scrollBody table {
365
+ border-bottom: none;
366
+ }
367
  .dataTables_wrapper:after {
368
+ visibility: hidden;
369
+ display: block;
370
+ content: "";
371
+ clear: both;
372
+ height: 0;
373
+ }
374
  @media screen and (max-width: 767px) {
375
  .dataTables_wrapper .dataTables_info,
376
  .dataTables_wrapper .dataTables_paginate {
377
  float: none;
378
  text-align: center;
379
  }
380
+
381
  .dataTables_wrapper .dataTables_paginate {
382
  margin-top: 0.5em;
383
  }
388
  float: none;
389
  text-align: center;
390
  }
391
+
392
  .dataTables_wrapper .dataTables_filter {
393
  margin-top: 0.5em;
394
  }
common/src/resources/css/datatables.min.css CHANGED
@@ -1 +1 @@
1
- table.dataTable{border-collapse:separate;border-spacing:0;clear:both;margin:0 auto;width:100%}table.dataTable thead td:active,table.dataTable thead th:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer;cursor:hand}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{background-position:100%;background-repeat:no-repeat}table.dataTable thead .sorting{background-image:url(../../../vendor/datatables/DataTables/images/sort_both.png)}table.dataTable thead .sorting_asc{background-image:url(../../../vendor/datatables/DataTables/images/sort_asc.png)}table.dataTable thead .sorting_desc{background-image:url(../../../vendor/datatables/DataTables/images/sort_desc.png)}table.dataTable thead .sorting_asc_disabled{background-image:url(../../../vendor/datatables/DataTables/images/sort_asc_disabled.png)}table.dataTable thead .sorting_desc_disabled{background-image:url(../../../vendor/datatables/DataTables/images/sort_desc_disabled.png)}table.dataTable.widefat tfoot td input,table.dataTable.widefat tfoot th input,table.dataTable.widefat thead td input,table.dataTable.widefat thead th input{margin:0 0 0 8px;vertical-align:text-top}table.dataTable.widefat tfoot td.check-column,table.dataTable.widefat thead td.check-column{padding-top:4px;vertical-align:middle}table.dataTable.widefat tbody th.check-column,table.dataTable.widefat tfoot th.check-column,table.dataTable.widefat thead th.check-column{padding:11px 0 0 3px}table.dataTable .check-column{width:2.2em}table.dataTable.display tbody td,table.dataTable.display tbody th,table.dataTable.row-border tbody td,table.dataTable.row-border tbody th{border-top:1px solid #ddd}table.dataTable.display tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody td,table.dataTable.cell-border tbody th{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr td:first-child,table.dataTable.cell-border tbody tr th:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child td,table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.display tbody tr.odd,table.dataTable.stripe tbody tr.odd{background-color:#f9f9f9}table.dataTable.display tbody tr:hover,table.dataTable.hover tbody tr:hover{background-color:#f6f6f6}table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3,table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}table.dataTable.compact thead td,table.dataTable.compact thead th{padding:4px 17px 4px 4px}table.dataTable.compact tbody td,table.dataTable.compact tbody th,table.dataTable.compact tfoot td,table.dataTable.compact tfoot th{padding:4px}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable td.dt-nowrap,table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable td,table.dataTable th{box-sizing:content-box}.dataTables_wrapper{clear:both;position:relative;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;padding-top:.25em;text-align:right}.dataTables_wrapper .dataTables_paginate .paginate_button{border:1px solid transparent;border-radius:3px;box-shadow:none;box-sizing:border-box;color:#555;cursor:pointer;display:inline-block;font-size:13px;height:28px;line-height:26px;margin:0 0 0 2px;padding:0 10px 1px;text-decoration:none;vertical-align:top;white-space:nowrap}.dataTables_wrapper .dataTables_paginate .paginate_button:active,.dataTables_wrapper .dataTables_paginate .paginate_button:hover{background:#fafafa;border-color:#999;color:#23282d}.dataTables_wrapper .dataTables_paginate .paginate_button.next,.dataTables_wrapper .dataTables_paginate .paginate_button.previous{background:transparent;border-color:transparent;box-shadow:none;color:#23282d}.dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled{background:transparent;border-color:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled:hover{background:transparent;border-color:transparent;box-shadow:none;text-decoration:none}.dataTables_wrapper .dataTables_paginate .paginate_button.next:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.previous:hover{color:#222;text-decoration:underline}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{background:#fcfcfc;border-color:#999;box-shadow:0 1px 0 #ccc;color:#23282d;text-decoration:none}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{background:#f7f7f7;border-color:#ddd;box-shadow:none;color:#a0a5aa;cursor:default;text-shadow:0 1px 0 #fff;transform:none}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.9) 25%,hsla(0,0%,100%,.9) 75%,hsla(0,0%,100%,0))}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_paginate,.dataTables_wrapper .dataTables_processing{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollBody table,.dataTables_wrapper.no-footer div.dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}
1
+ table.dataTable{border-collapse:separate;border-spacing:0;clear:both;margin:0 auto;width:100%}table.dataTable thead td:active,table.dataTable thead th:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer;*cursor:hand}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{background-position:100%;background-repeat:no-repeat}table.dataTable thead .sorting{background-image:url(../../../vendor/datatables/DataTables/images/sort_both.png)}table.dataTable thead .sorting_asc{background-image:url(../../../vendor/datatables/DataTables/images/sort_asc.png)}table.dataTable thead .sorting_desc{background-image:url(../../../vendor/datatables/DataTables/images/sort_desc.png)}table.dataTable thead .sorting_asc_disabled{background-image:url(../../../vendor/datatables/DataTables/images/sort_asc_disabled.png)}table.dataTable thead .sorting_desc_disabled{background-image:url(../../../vendor/datatables/DataTables/images/sort_desc_disabled.png)}table.dataTable.widefat tfoot td input,table.dataTable.widefat tfoot th input,table.dataTable.widefat thead td input,table.dataTable.widefat thead th input{margin:0 0 0 8px;vertical-align:text-top}table.dataTable.widefat tfoot td.check-column,table.dataTable.widefat thead td.check-column{padding-top:4px;vertical-align:middle}table.dataTable.widefat tbody th.check-column,table.dataTable.widefat tfoot th.check-column,table.dataTable.widefat thead th.check-column{padding:11px 0 0 3px}table.dataTable .check-column{width:2.2em}table.dataTable.display tbody td,table.dataTable.display tbody th,table.dataTable.row-border tbody td,table.dataTable.row-border tbody th{border-top:1px solid #ddd}table.dataTable.display tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody td,table.dataTable.cell-border tbody th{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr td:first-child,table.dataTable.cell-border tbody tr th:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child td,table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.display tbody tr.odd,table.dataTable.stripe tbody tr.odd{background-color:#f9f9f9}table.dataTable.display tbody tr:hover,table.dataTable.hover tbody tr:hover{background-color:#f6f6f6}table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3,table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}table.dataTable.compact thead td,table.dataTable.compact thead th{padding:4px 17px 4px 4px}table.dataTable.compact tbody td,table.dataTable.compact tbody th,table.dataTable.compact tfoot td,table.dataTable.compact tfoot th{padding:4px}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable td.dt-nowrap,table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable td,table.dataTable th{box-sizing:content-box}.dataTables_wrapper{clear:both;position:relative;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;padding-top:.25em;text-align:right}.dataTables_wrapper .dataTables_paginate .paginate_button{border:1px solid transparent;border-radius:3px;box-shadow:none;box-sizing:border-box;color:#555;cursor:pointer;display:inline-block;font-size:13px;height:28px;line-height:26px;margin:0 0 0 2px;padding:0 10px 1px;text-decoration:none;vertical-align:top;white-space:nowrap}.dataTables_wrapper .dataTables_paginate .paginate_button:active,.dataTables_wrapper .dataTables_paginate .paginate_button:hover{background:#fafafa;border-color:#999;color:#23282d}.dataTables_wrapper .dataTables_paginate .paginate_button.next,.dataTables_wrapper .dataTables_paginate .paginate_button.previous{background:transparent;border-color:transparent;box-shadow:none;color:#23282d}.dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled{background:transparent;border-color:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button.next.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.previous.disabled:hover{background:transparent;border-color:transparent;box-shadow:none;text-decoration:none}.dataTables_wrapper .dataTables_paginate .paginate_button.next:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.previous:hover{color:#222;text-decoration:underline}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{background:#fcfcfc;border-color:#999;box-shadow:0 1px 0 #ccc;color:#23282d;text-decoration:none}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{background:#f7f7f7;border-color:#ddd;box-shadow:none;color:#a0a5aa;cursor:default;text-shadow:0 1px 0 #fff;transform:none}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.9) 25%,hsla(0,0%,100%,.9) 75%,hsla(0,0%,100%,0))}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_paginate,.dataTables_wrapper .dataTables_processing{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollBody table,.dataTables_wrapper.no-footer div.dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}
common/src/resources/css/datepicker.css CHANGED
@@ -13,12 +13,11 @@
13
  .tribe-ui-datepicker.ui-datepicker input,
14
  .tribe-ui-datepicker.ui-datepicker select,
15
  .tribe-ui-datepicker.ui-datepicker textarea {
16
- font-family: "Verdana", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
17
- }
18
-
19
- .tribe-ui-datepicker.ui-datepicker table {
20
- border: none;
21
- }
22
 
23
  .tribe-ui-datepicker .ui-datepicker-month {
24
  font-weight: bold;
@@ -36,16 +35,15 @@
36
  ----------------------------------*/
37
 
38
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-group span.ui-icon {
39
- display: inline-block;
40
- vertical-align: middle;
41
- margin-top: -4px;
42
- margin-top: -.25rem;
43
- position: relative;
44
- text-indent: -99999px;
45
- overflow: hidden;
46
- background-repeat: no-repeat;
47
- background-image: none;
48
- }
49
 
50
  .tribe-ui-datepicker .ui-widget-icon-block {
51
  left: 50%;
@@ -68,14 +66,13 @@
68
 
69
  .tribe-ui-datepicker.ui-datepicker {
70
  background: #fff;
71
- box-shadow: 1px 1px 5px rgba(0, 0, 0, .5);
72
  width: 17em;
73
  padding: 1em;
74
  display: none;
75
  }
76
 
77
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-header {
78
- margin-bottom: 16px;
79
  margin-bottom: 1rem;
80
  position: relative;
81
  padding: 0;
@@ -88,30 +85,31 @@
88
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next {
89
  position: absolute;
90
  top: 50%;
91
- transform: translateY(-50%);
 
92
  line-height: 1.8em;
93
  text-align: center;
94
  }
95
 
96
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:before {
97
- color: #b1b1b1;
98
- content: '\2190';
99
- cursor: pointer;
100
- }
101
 
102
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:hover:before {
103
- color: #000;
104
- }
105
 
106
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:before {
107
- color: #b1b1b1;
108
- content: '\2192';
109
- cursor: pointer;
110
- }
111
 
112
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:hover:before {
113
- color: #000;
114
- }
115
 
116
  .tribe-ui-datepicker .ui-datepicker-prev-hover,
117
  .tribe-ui-datepicker .ui-datepicker-next-hover {
@@ -121,110 +119,101 @@
121
  }
122
 
123
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev {
124
- left: 1px;
125
- }
126
 
127
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next {
128
- right: 1px;
129
- }
130
 
131
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev-hover {
132
- left: 1px;
133
- }
134
 
135
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next-hover {
136
- right: 1px;
137
- }
138
 
139
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-title {
140
- margin: 0 2.3em;
141
- line-height: 1.8;
142
- text-align: center;
143
- }
144
 
145
  .tribe-ui-datepicker select.ui-datepicker-month,
146
  .tribe-ui-datepicker select.ui-datepicker-year {
147
  border: none;
148
- box-shadow: 0 1px 0 rgba(0, 0, 0, .1);
149
  margin-right: 1px;
150
- width: 72px;
151
  width: 4.5rem;
152
  }
153
 
154
  .tribe-ui-datepicker.ui-datepicker table {
155
- width: 100%;
156
- font-size: 14.4px;
157
- font-size: .9rem;
158
- border-collapse: collapse;
159
- margin: 0 0 6.4px;
160
- margin: 0 0 .4rem;
161
- }
162
 
163
  .tribe-ui-datepicker.ui-datepicker th {
164
- color: #b1b1b1;
165
- padding: 11.2px 4.8px;
166
- padding: .7rem .3rem;
167
- text-align: center;
168
- border: 0;
169
- }
170
 
171
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-calendar td {
172
- border: 1px solid #ddd;
173
- padding: 1px;
174
- }
175
 
176
  .tribe-ui-datepicker.ui-datepicker td.ui-datepicker-unselectable {
177
- border: none;
178
- }
179
 
180
  .tribe-ui-datepicker.ui-datepicker a.ui-state-active {
181
- background: #0085ba;
182
- color: #fff;
183
- }
184
 
185
  .tribe-ui-datepicker.ui-datepicker td span,
186
  .tribe-ui-datepicker.ui-datepicker td a {
187
- display: block;
188
- padding: 8px 3.2px;
189
- padding: .5rem .2rem;
190
- text-align: center;
191
- text-decoration: none;
192
- }
193
 
194
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane {
195
- background-image: none;
196
- margin: 11.2px 0 0 0;
197
- margin: .7rem 0 0 0;
198
- padding: 0 3.2px;
199
- padding: 0 .2rem;
200
- border-left: 0;
201
- border-right: 0;
202
- border-bottom: 0;
203
- }
204
 
205
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button {
206
- float: right;
207
- margin: 8px 3.2px 6.4px;
208
- margin: .5rem .2rem .4rem;
209
- cursor: pointer;
210
- padding: 3.2px 9.6px 4.8px 9.6px;
211
- padding: .2rem .6rem .3rem .6rem;
212
- width: auto;
213
- overflow: visible;
214
- }
215
 
216
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
217
- float: left;
218
- background: #fff;
219
- border: 1px solid #b1b1b1;
220
- }
221
 
222
  .tribe-ui-datepicker.ui-datepicker button.ui-datepicker-close {
223
- background: linear-gradient(354deg, rgba(10, 85, 160, 1.00) 0%, rgba(18, 136, 235, 1.00) 100%);
224
- border: 1px solid #0085ba;
225
- color: #fff !important;
226
- font-weight: 400;
227
- }
228
 
229
  /* with multiple calendars */
230
 
@@ -238,7 +227,6 @@
238
 
239
  .tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group table {
240
  width: 95%;
241
- margin: 0 auto 6.4px;
242
  margin: 0 auto .4rem;
243
  }
244
 
@@ -273,13 +261,11 @@
273
  ----------------------------------*/
274
 
275
  .tribe-ui-datepicker.ui-widget {
276
- font-size: 19.2px;
277
  font-size: 1.2rem;
278
  font-family: inherit;
279
  }
280
 
281
  .tribe-ui-datepicker.ui-widget .ui-widget {
282
- font-size: 16px;
283
  font-size: 1rem;
284
  }
285
 
@@ -287,7 +273,6 @@
287
  .tribe-ui-datepicker.ui-widget select,
288
  .tribe-ui-datepicker.ui-widget textarea,
289
  .tribe-ui-datepicker.ui-widget button {
290
- font-size: 16px;
291
  font-size: 1rem;
292
  }
293
 
@@ -321,9 +306,9 @@ html .tribe-ui-datepicker .ui-button.ui-state-disabled:active {
321
  .tribe-ui-datepicker a:link.ui-button,
322
  .tribe-ui-datepicker a:visited.ui-button,
323
  .tribe-ui-datepicker .ui-button {
324
- color: #23282d;
325
- text-decoration: none;
326
- }
327
 
328
  .tribe-ui-datepicker .ui-state-hover,
329
  .tribe-ui-datepicker .ui-widget-content .ui-state-hover,
@@ -333,10 +318,10 @@ html .tribe-ui-datepicker .ui-button.ui-state-disabled:active {
333
  .tribe-ui-datepicker .ui-widget-header .ui-state-focus,
334
  .tribe-ui-datepicker .ui-button:hover,
335
  .tribe-ui-datepicker .ui-button:focus {
336
- color: #000;
337
- border: 0;
338
- background: none;
339
- }
340
 
341
  .tribe-ui-datepicker .ui-state-hover a,
342
  .tribe-ui-datepicker .ui-state-hover a:hover,
@@ -348,15 +333,15 @@ html .tribe-ui-datepicker .ui-button.ui-state-disabled:active {
348
  .tribe-ui-datepicker .ui-state-focus a:visited,
349
  .tribe-ui-datepicker a.ui-button:hover,
350
  .tribe-ui-datepicker a.ui-button:focus {
351
- color: #b1b1b1;
352
- text-decoration: none;
353
- background-color: none;
354
- background-image: none;
355
- }
356
 
357
  .tribe-ui-datepicker .ui-visual-focus {
358
- box-shadow: 0 0 3px 1px rgb(94, 158, 214);
359
- }
360
 
361
  .tribe-ui-datepicker .ui-state-active,
362
  .tribe-ui-datepicker .ui-widget-content .ui-state-active,
@@ -364,22 +349,22 @@ html .tribe-ui-datepicker .ui-button.ui-state-disabled:active {
364
  .tribe-ui-datepicker a.ui-button:active,
365
  .tribe-ui-datepicker .ui-button:active,
366
  .tribe-ui-datepicker .ui-button.ui-state-active:hover {
367
- background: linear-gradient(354deg, rgba(10, 85, 160, 1.00) 0%, rgba(18, 136, 235, 1.00) 100%);
368
- color: #fff;
369
- }
370
 
371
  .tribe-ui-datepicker .ui-icon-background,
372
  .tribe-ui-datepicker .ui-state-active .ui-icon-background {
373
- border: #dddddd;
374
- background-color: #1c94c4;
375
- }
376
 
377
  .tribe-ui-datepicker .ui-state-active a,
378
  .tribe-ui-datepicker .ui-state-active a:link,
379
  .tribe-ui-datepicker .ui-state-active a:visited {
380
- color: #23282d;
381
- text-decoration: none;
382
- }
383
 
384
  /* Interaction Cues
385
  ----------------------------------*/
@@ -448,96 +433,92 @@ html .tribe-ui-datepicker .ui-button.ui-state-disabled:active {
448
  .tribe-ui-datepicker .ui-corner-top,
449
  .tribe-ui-datepicker .ui-corner-left,
450
  .tribe-ui-datepicker .ui-corner-tl {
451
- border-top-left-radius: 4px;
452
- }
453
 
454
  .tribe-ui-datepicker .ui-corner-all,
455
  .tribe-ui-datepicker .ui-corner-top,
456
  .tribe-ui-datepicker .ui-corner-right,
457
  .tribe-ui-datepicker .ui-corner-tr {
458
- border-top-right-radius: 4px;
459
- }
460
 
461
  .tribe-ui-datepicker .ui-corner-all,
462
  .tribe-ui-datepicker .ui-corner-bottom,
463
  .tribe-ui-datepicker .ui-corner-left,
464
  .tribe-ui-datepicker .ui-corner-bl {
465
- border-bottom-left-radius: 4px;
466
- }
467
 
468
  .tribe-ui-datepicker .ui-corner-all,
469
  .tribe-ui-datepicker .ui-corner-bottom,
470
  .tribe-ui-datepicker .ui-corner-right,
471
  .tribe-ui-datepicker .ui-corner-br {
472
- border-bottom-right-radius: 4px;
473
- }
474
 
475
  /* Overlays */
476
 
477
  .tribe-ui-datepicker .ui-widget-overlay {
478
- background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;
479
- opacity: .5;
480
- filter: Alpha(Opacity=50);
481
-
482
- /* support: IE8 */
483
- }
484
 
485
  .tribe-ui-datepicker .ui-widget-shadow {
486
- box-shadow: -5px -5px 5px #000000;
487
- }
488
 
489
  .tribe-ui-datepicker .ui-helper-hidden {
490
- display: none;
491
- }
492
 
493
  .tribe-ui-datepicker .ui-helper-hidden-accessible {
494
- border: 0;
495
- clip: rect(0 0 0 0);
496
- height: 1px;
497
- margin: -1px;
498
- overflow: hidden;
499
- padding: 0;
500
- position: absolute;
501
- width: 1px;
502
- }
503
 
504
  .tribe-ui-datepicker .ui-helper-reset {
505
- margin: 0;
506
- padding: 0;
507
- border: 0;
508
- outline: 0;
509
- line-height: 1.3;
510
- text-decoration: none;
511
- font-size: 100%;
512
- list-style: none;
513
- }
514
 
515
  .tribe-ui-datepicker .ui-helper-clearfix:before,
516
  .tribe-ui-datepicker .ui-helper-clearfix:after {
517
- content: "";
518
- display: table;
519
- border-collapse: collapse;
520
- }
521
 
522
  .tribe-ui-datepicker .ui-helper-clearfix:after {
523
- clear: both;
524
- }
525
 
526
  .tribe-ui-datepicker .ui-helper-zfix {
527
- width: 100%;
528
- height: 100%;
529
- top: 0;
530
- left: 0;
531
- position: absolute;
532
- opacity: 0;
533
- filter:Alpha(Opacity=0);
534
-
535
- /* support: IE8 */
536
- }
537
 
538
  .tribe-ui-datepicker .ui-front {
539
- z-index: 100;
540
- }
541
 
542
  /* RTL support */
543
 
@@ -546,40 +527,40 @@ html .tribe-ui-datepicker .ui-button.ui-state-disabled:active {
546
  }
547
 
548
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev {
549
- right: 2px;
550
- left: auto;
551
- }
552
 
553
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next {
554
- left: 2px;
555
- right: auto;
556
- }
557
 
558
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev:hover {
559
- right: 1px;
560
- left: auto;
561
- }
562
 
563
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next:hover {
564
- left: 1px;
565
- right: auto;
566
- }
567
 
568
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane {
569
- clear: right;
570
- }
571
 
572
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button {
573
- float: left;
574
- }
575
 
576
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
577
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group {
578
- float: right;
579
- }
580
 
581
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
582
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
583
- border-right-width: 0;
584
- border-left-width: 1px;
585
- }
13
  .tribe-ui-datepicker.ui-datepicker input,
14
  .tribe-ui-datepicker.ui-datepicker select,
15
  .tribe-ui-datepicker.ui-datepicker textarea {
16
+ font-family: "Verdana", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
17
+ }
18
+ .tribe-ui-datepicker.ui-datepicker table {
19
+ border: none;
20
+ }
 
21
 
22
  .tribe-ui-datepicker .ui-datepicker-month {
23
  font-weight: bold;
35
  ----------------------------------*/
36
 
37
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-group span.ui-icon {
38
+ display: inline-block;
39
+ vertical-align: middle;
40
+ margin-top: -.25rem;
41
+ position: relative;
42
+ text-indent: -99999px;
43
+ overflow: hidden;
44
+ background-repeat: no-repeat;
45
+ background-image: none;
46
+ }
 
47
 
48
  .tribe-ui-datepicker .ui-widget-icon-block {
49
  left: 50%;
66
 
67
  .tribe-ui-datepicker.ui-datepicker {
68
  background: #fff;
69
+ box-shadow: 1px 1px 5px rgba(0,0,0,.5);
70
  width: 17em;
71
  padding: 1em;
72
  display: none;
73
  }
74
 
75
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-header {
 
76
  margin-bottom: 1rem;
77
  position: relative;
78
  padding: 0;
85
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next {
86
  position: absolute;
87
  top: 50%;
88
+ -webkit-transform: translateY(-50%);
89
+ transform: translateY(-50%);
90
  line-height: 1.8em;
91
  text-align: center;
92
  }
93
 
94
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:before {
95
+ color: #b1b1b1;
96
+ content: '\2190';
97
+ cursor: pointer;
98
+ }
99
 
100
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:hover:before {
101
+ color: #000;
102
+ }
103
 
104
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:before {
105
+ color: #b1b1b1;
106
+ content: '\2192';
107
+ cursor: pointer;
108
+ }
109
 
110
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:hover:before {
111
+ color: #000;
112
+ }
113
 
114
  .tribe-ui-datepicker .ui-datepicker-prev-hover,
115
  .tribe-ui-datepicker .ui-datepicker-next-hover {
119
  }
120
 
121
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev {
122
+ left: 1px;
123
+ }
124
 
125
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next {
126
+ right: 1px;
127
+ }
128
 
129
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev-hover {
130
+ left: 1px;
131
+ }
132
 
133
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-next-hover {
134
+ right: 1px;
135
+ }
136
 
137
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-title {
138
+ margin: 0 2.3em;
139
+ line-height: 1.8;
140
+ text-align: center;
141
+ }
142
 
143
  .tribe-ui-datepicker select.ui-datepicker-month,
144
  .tribe-ui-datepicker select.ui-datepicker-year {
145
  border: none;
146
+ box-shadow: 0 1px 0 rgba(0,0,0,0.1);
147
  margin-right: 1px;
 
148
  width: 4.5rem;
149
  }
150
 
151
  .tribe-ui-datepicker.ui-datepicker table {
152
+ width: 100%;
153
+ font-size: .9rem;
154
+ border-collapse: collapse;
155
+ margin: 0 0 .4rem;
156
+ }
 
 
157
 
158
  .tribe-ui-datepicker.ui-datepicker th {
159
+ color: #b1b1b1;
160
+ padding: .7rem .3rem;
161
+ text-align: center;
162
+ border: 0;
163
+ }
 
164
 
165
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-calendar td {
166
+ border: 1px solid #ddd;
167
+ padding: 1px;
168
+ }
169
 
170
  .tribe-ui-datepicker.ui-datepicker td.ui-datepicker-unselectable {
171
+ border: none;
172
+ }
173
 
174
  .tribe-ui-datepicker.ui-datepicker a.ui-state-active {
175
+ background: #0085ba;
176
+ color: #fff;
177
+ }
178
 
179
  .tribe-ui-datepicker.ui-datepicker td span,
180
  .tribe-ui-datepicker.ui-datepicker td a {
181
+ display: block;
182
+ padding: .5rem .2rem;
183
+ text-align: center;
184
+ text-decoration: none;
185
+ }
 
186
 
187
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane {
188
+ background-image: none;
189
+ margin: .7rem 0 0 0;
190
+ padding: 0 .2rem;
191
+ border-left: 0;
192
+ border-right: 0;
193
+ border-bottom: 0;
194
+ }
 
 
195
 
196
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button {
197
+ float: right;
198
+ margin: .5rem .2rem .4rem;
199
+ cursor: pointer;
200
+ padding: .2rem .6rem .3rem .6rem;
201
+ width: auto;
202
+ overflow: visible;
203
+ }
 
 
204
 
205
  .tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
206
+ float: left;
207
+ background: #fff;
208
+ border: 1px solid #b1b1b1;
209
+ }
210
 
211
  .tribe-ui-datepicker.ui-datepicker button.ui-datepicker-close {
212
+ background: linear-gradient(354deg, rgba(10,85,160,1.00) 0%, rgba(18,136,235,1.00) 100%);
213
+ border: 1px solid #0085ba;
214
+ color: #fff !important;
215
+ font-weight: 400;
216
+ }
217
 
218
  /* with multiple calendars */
219
 
227
 
228
  .tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group table {
229
  width: 95%;
 
230
  margin: 0 auto .4rem;
231
  }
232
 
261
  ----------------------------------*/
262
 
263
  .tribe-ui-datepicker.ui-widget {
 
264
  font-size: 1.2rem;
265
  font-family: inherit;
266
  }
267
 
268
  .tribe-ui-datepicker.ui-widget .ui-widget {
 
269
  font-size: 1rem;
270
  }
271
 
273
  .tribe-ui-datepicker.ui-widget select,
274
  .tribe-ui-datepicker.ui-widget textarea,
275
  .tribe-ui-datepicker.ui-widget button {
 
276
  font-size: 1rem;
277
  }
278
 
306
  .tribe-ui-datepicker a:link.ui-button,
307
  .tribe-ui-datepicker a:visited.ui-button,
308
  .tribe-ui-datepicker .ui-button {
309
+ color: #23282d;
310
+ text-decoration: none;
311
+ }
312
 
313
  .tribe-ui-datepicker .ui-state-hover,
314
  .tribe-ui-datepicker .ui-widget-content .ui-state-hover,
318
  .tribe-ui-datepicker .ui-widget-header .ui-state-focus,
319
  .tribe-ui-datepicker .ui-button:hover,
320
  .tribe-ui-datepicker .ui-button:focus {
321
+ color: #000;
322
+ border: 0;
323
+ background: none;
324
+ }
325
 
326
  .tribe-ui-datepicker .ui-state-hover a,
327
  .tribe-ui-datepicker .ui-state-hover a:hover,
333
  .tribe-ui-datepicker .ui-state-focus a:visited,
334
  .tribe-ui-datepicker a.ui-button:hover,
335
  .tribe-ui-datepicker a.ui-button:focus {
336
+ color: #b1b1b1;
337
+ text-decoration: none;
338
+ background-color: none;
339
+ background-image: none;
340
+ }
341
 
342
  .tribe-ui-datepicker .ui-visual-focus {
343
+ box-shadow: 0 0 3px 1px rgb(94, 158, 214);
344
+ }
345
 
346
  .tribe-ui-datepicker .ui-state-active,
347
  .tribe-ui-datepicker .ui-widget-content .ui-state-active,
349
  .tribe-ui-datepicker a.ui-button:active,
350
  .tribe-ui-datepicker .ui-button:active,
351
  .tribe-ui-datepicker .ui-button.ui-state-active:hover {
352
+ background: linear-gradient(354deg, rgba(10,85,160,1.00) 0%, rgba(18,136,235,1.00) 100%);
353
+ color: #fff;
354
+ }
355
 
356
  .tribe-ui-datepicker .ui-icon-background,
357
  .tribe-ui-datepicker .ui-state-active .ui-icon-background {
358
+ border: #dddddd;
359
+ background-color: #1c94c4;
360
+ }
361
 
362
  .tribe-ui-datepicker .ui-state-active a,
363
  .tribe-ui-datepicker .ui-state-active a:link,
364
  .tribe-ui-datepicker .ui-state-active a:visited {
365
+ color: #23282d;
366
+ text-decoration: none;
367
+ }
368
 
369
  /* Interaction Cues
370
  ----------------------------------*/
433
  .tribe-ui-datepicker .ui-corner-top,
434
  .tribe-ui-datepicker .ui-corner-left,
435
  .tribe-ui-datepicker .ui-corner-tl {
436
+ border-top-left-radius: 4px;
437
+ }
438
 
439
  .tribe-ui-datepicker .ui-corner-all,
440
  .tribe-ui-datepicker .ui-corner-top,
441
  .tribe-ui-datepicker .ui-corner-right,
442
  .tribe-ui-datepicker .ui-corner-tr {
443
+ border-top-right-radius: 4px;
444
+ }
445
 
446
  .tribe-ui-datepicker .ui-corner-all,
447
  .tribe-ui-datepicker .ui-corner-bottom,
448
  .tribe-ui-datepicker .ui-corner-left,
449
  .tribe-ui-datepicker .ui-corner-bl {
450
+ border-bottom-left-radius: 4px;
451
+ }
452
 
453
  .tribe-ui-datepicker .ui-corner-all,
454
  .tribe-ui-datepicker .ui-corner-bottom,
455
  .tribe-ui-datepicker .ui-corner-right,
456
  .tribe-ui-datepicker .ui-corner-br {
457
+ border-bottom-right-radius: 4px;
458
+ }
459
 
460
  /* Overlays */
461
 
462
  .tribe-ui-datepicker .ui-widget-overlay {
463
+ background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;
464
+ opacity: .5;
465
+ filter: Alpha(Opacity=50); /* support: IE8 */
466
+ }
 
 
467
 
468
  .tribe-ui-datepicker .ui-widget-shadow {
469
+ box-shadow: -5px -5px 5px #000000;
470
+ }
471
 
472
  .tribe-ui-datepicker .ui-helper-hidden {
473
+ display: none;
474
+ }
475
 
476
  .tribe-ui-datepicker .ui-helper-hidden-accessible {
477
+ border: 0;
478
+ clip: rect(0 0 0 0);
479
+ height: 1px;
480
+ margin: -1px;
481
+ overflow: hidden;
482
+ padding: 0;
483
+ position: absolute;
484
+ width: 1px;
485
+ }
486
 
487
  .tribe-ui-datepicker .ui-helper-reset {
488
+ margin: 0;
489
+ padding: 0;
490
+ border: 0;
491
+ outline: 0;
492
+ line-height: 1.3;
493
+ text-decoration: none;
494
+ font-size: 100%;
495
+ list-style: none;
496
+ }
497
 
498
  .tribe-ui-datepicker .ui-helper-clearfix:before,
499
  .tribe-ui-datepicker .ui-helper-clearfix:after {
500
+ content: "";
501
+ display: table;
502
+ border-collapse: collapse;
503
+ }
504
 
505
  .tribe-ui-datepicker .ui-helper-clearfix:after {
506
+ clear: both;
507
+ }
508
 
509
  .tribe-ui-datepicker .ui-helper-zfix {
510
+ width: 100%;
511
+ height: 100%;
512
+ top: 0;
513
+ left: 0;
514
+ position: absolute;
515
+ opacity: 0;
516
+ filter:Alpha(Opacity=0); /* support: IE8 */
517
+ }
 
 
518
 
519
  .tribe-ui-datepicker .ui-front {
520
+ z-index: 100;
521
+ }
522
 
523
  /* RTL support */
524
 
527
  }
528
 
529
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev {
530
+ right: 2px;
531
+ left: auto;
532
+ }
533
 
534
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next {
535
+ left: 2px;
536
+ right: auto;
537
+ }
538
 
539
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev:hover {
540
+ right: 1px;
541
+ left: auto;
542
+ }
543
 
544
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next:hover {
545
+ left: 1px;
546
+ right: auto;
547
+ }
548
 
549
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane {
550
+ clear: right;
551
+ }
552
 
553
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button {
554
+ float: left;
555
+ }
556
 
557
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
558
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group {
559
+ float: right;
560
+ }
561
 
562
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
563
  .tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
564
+ border-right-width: 0;
565
+ border-left-width: 1px;
566
+ }
common/src/resources/css/datepicker.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-ui-datepicker.ui-datepicker body,.tribe-ui-datepicker.ui-datepicker button,.tribe-ui-datepicker.ui-datepicker input,.tribe-ui-datepicker.ui-datepicker select,.tribe-ui-datepicker.ui-datepicker textarea{font-family:Verdana,Helvetica Neue,Helvetica,Arial,sans-serif}.tribe-ui-datepicker.ui-datepicker table{border:none}.tribe-ui-datepicker .ui-datepicker-month{font-weight:700}.tribe-ui-datepicker .ui-state-disabled{cursor:default!important;pointer-events:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-group span.ui-icon{display:inline-block;vertical-align:middle;margin-top:-4px;margin-top:-.25rem;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;background-image:none}.tribe-ui-datepicker .ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.tribe-ui-datepicker.ui-datepicker{background:#fff;box-shadow:1px 1px 5px rgba(0,0,0,.5);width:17em;padding:1em;display:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-header{margin-bottom:16px;margin-bottom:1rem;position:relative;padding:0;border:0;background-color:transparent;background-image:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next,.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev{position:absolute;top:50%;transform:translateY(-50%);line-height:1.8em;text-align:center}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:before{color:#b1b1b1;content:"\2190";cursor:pointer}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:hover:before{color:#000}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:before{color:#b1b1b1;content:"\2192";cursor:pointer}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:hover:before{color:#000}.tribe-ui-datepicker .ui-datepicker-next-hover,.tribe-ui-datepicker .ui-datepicker-prev-hover{color:darken(#b1b1b1,10%);border:0;background:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev{left:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next{right:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev-hover{left:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next-hover{right:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8;text-align:center}.tribe-ui-datepicker select.ui-datepicker-month,.tribe-ui-datepicker select.ui-datepicker-year{border:none;box-shadow:0 1px 0 rgba(0,0,0,.1);margin-right:1px;width:72px;width:4.5rem}.tribe-ui-datepicker.ui-datepicker table{width:100%;font-size:14.4px;font-size:.9rem;border-collapse:collapse;margin:0 0 6.4px;margin:0 0 .4rem}.tribe-ui-datepicker.ui-datepicker th{color:#b1b1b1;padding:11.2px 4.8px;padding:.7rem .3rem;text-align:center;border:0}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-calendar td{border:1px solid #ddd;padding:1px}.tribe-ui-datepicker.ui-datepicker td.ui-datepicker-unselectable{border:none}.tribe-ui-datepicker.ui-datepicker a.ui-state-active{background:#0085ba;color:#fff}.tribe-ui-datepicker.ui-datepicker td a,.tribe-ui-datepicker.ui-datepicker td span{display:block;padding:8px 3.2px;padding:.5rem .2rem;text-align:center;text-decoration:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:11.2px 0 0;margin:.7rem 0 0;padding:0 3.2px;padding:0 .2rem;border-left:0;border-right:0;border-bottom:0}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:8px 3.2px 6.4px;margin:.5rem .2rem .4rem;cursor:pointer;padding:3.2px 9.6px 4.8px;padding:.2rem .6rem .3rem;width:auto;overflow:visible}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;background:#fff;border:1px solid #b1b1b1}.tribe-ui-datepicker.ui-datepicker button.ui-datepicker-close{background:linear-gradient(354deg,#0a55a0,#1288eb);border:1px solid #0085ba;color:#fff!important;font-weight:400}.tribe-ui-datepicker.ui-datepicker.ui-datepicker-multi{width:auto}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group{float:left}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto 6.4px;margin:0 auto .4rem}.tribe-ui-datepicker.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.tribe-ui-datepicker.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.tribe-ui-datepicker.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.tribe-ui-datepicker .ui-datepicker-row-break{clear:both;width:100%;font-size:0}.tribe-ui-datepicker.ui-widget{font-size:19.2px;font-size:1.2rem;font-family:inherit}.tribe-ui-datepicker.ui-widget .ui-widget,.tribe-ui-datepicker.ui-widget button,.tribe-ui-datepicker.ui-widget input,.tribe-ui-datepicker.ui-widget select,.tribe-ui-datepicker.ui-widget textarea{font-size:16px;font-size:1rem}.tribe-ui-datepicker.ui-widget-content a,.tribe-ui-datepicker .ui-widget-header a{color:#23282d}.tribe-ui-datepicker .ui-button,.tribe-ui-datepicker .ui-state-default,.tribe-ui-datepicker.ui-widget-content .ui-state-default,.tribe-ui-datepicker .ui-widget-header .ui-state-default,html .tribe-ui-datepicker .ui-button.ui-state-disabled:active,html .tribe-ui-datepicker .ui-button.ui-state-disabled:hover{color:#23282d;border:0;background-color:transparent;background-image:none}.tribe-ui-datepicker .ui-button,.tribe-ui-datepicker .ui-state-default a,.tribe-ui-datepicker .ui-state-default a:link,.tribe-ui-datepicker .ui-state-default a:visited,.tribe-ui-datepicker a.ui-button,.tribe-ui-datepicker a:link.ui-button,.tribe-ui-datepicker a:visited.ui-button{color:#23282d;text-decoration:none}.tribe-ui-datepicker .ui-button:focus,.tribe-ui-datepicker .ui-button:hover,.tribe-ui-datepicker .ui-state-focus,.tribe-ui-datepicker .ui-state-hover,.tribe-ui-datepicker .ui-widget-content .ui-state-focus,.tribe-ui-datepicker .ui-widget-content .ui-state-hover,.tribe-ui-datepicker .ui-widget-header .ui-state-focus,.tribe-ui-datepicker .ui-widget-header .ui-state-hover{color:#000;border:0;background:none}.tribe-ui-datepicker .ui-state-focus a,.tribe-ui-datepicker .ui-state-focus a:hover,.tribe-ui-datepicker .ui-state-focus a:link,.tribe-ui-datepicker .ui-state-focus a:visited,.tribe-ui-datepicker .ui-state-hover a,.tribe-ui-datepicker .ui-state-hover a:hover,.tribe-ui-datepicker .ui-state-hover a:link,.tribe-ui-datepicker .ui-state-hover a:visited,.tribe-ui-datepicker a.ui-button:focus,.tribe-ui-datepicker a.ui-button:hover{color:#b1b1b1;text-decoration:none;background-color:none;background-image:none}.tribe-ui-datepicker .ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.tribe-ui-datepicker .ui-button.ui-state-active:hover,.tribe-ui-datepicker .ui-button:active,.tribe-ui-datepicker .ui-state-active,.tribe-ui-datepicker .ui-widget-content .ui-state-active,.tribe-ui-datepicker .ui-widget-header .ui-state-active,.tribe-ui-datepicker a.ui-button:active{background:linear-gradient(354deg,#0a55a0,#1288eb);color:#fff}.tribe-ui-datepicker .ui-icon-background,.tribe-ui-datepicker .ui-state-active .ui-icon-background{border:#ddd;background-color:#1c94c4}.tribe-ui-datepicker .ui-state-active a,.tribe-ui-datepicker .ui-state-active a:link,.tribe-ui-datepicker .ui-state-active a:visited{color:#23282d;text-decoration:none}.tribe-ui-datepicker .ui-state-highlight,.tribe-ui-datepicker.ui-widget-content .ui-state-highlight,.tribe-ui-datepicker .ui-widget-header .ui-state-highlight{background:#fff;color:#363636;border:0;background-image:none}.tribe-ui-datepicker .ui-state-checked{background:#fff}.tribe-ui-datepicker .ui-state-highlight a,.tribe-ui-datepicker.ui-widget-content .ui-state-highlight a,.tribe-ui-datepicker .ui-widget-header .ui-state-highlight a{color:#363636}.tribe-ui-datepicker .ui-state-error,.tribe-ui-datepicker.ui-widget-content .ui-state-error,.tribe-ui-datepicker .ui-widget-header .ui-state-error{background:#b81900;color:#fff}.tribe-ui-datepicker .ui-state-error-text,.tribe-ui-datepicker .ui-state-error a,.tribe-ui-datepicker.ui-widget-content .ui-state-error-text,.tribe-ui-datepicker.ui-widget-content .ui-state-error a,.tribe-ui-datepicker .ui-widget-header .ui-state-error-text,.tribe-ui-datepicker .ui-widget-header .ui-state-error a{color:#fff}.tribe-ui-datepicker .ui-priority-secondary,.tribe-ui-datepicker.ui-widget-content .ui-priority-secondary,.tribe-ui-datepicker .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.tribe-ui-datepicker .ui-state-disabled,.tribe-ui-datepicker.ui-widget-content .ui-state-disabled,.tribe-ui-datepicker .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.tribe-ui-datepicker .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-left,.tribe-ui-datepicker .ui-corner-tl,.tribe-ui-datepicker .ui-corner-top{border-top-left-radius:4px}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-right,.tribe-ui-datepicker .ui-corner-top,.tribe-ui-datepicker .ui-corner-tr{border-top-right-radius:4px}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-bl,.tribe-ui-datepicker .ui-corner-bottom,.tribe-ui-datepicker .ui-corner-left{border-bottom-left-radius:4px}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-bottom,.tribe-ui-datepicker .ui-corner-br,.tribe-ui-datepicker .ui-corner-right{border-bottom-right-radius:4px}.tribe-ui-datepicker .ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.tribe-ui-datepicker .ui-widget-shadow{box-shadow:-5px -5px 5px #000}.tribe-ui-datepicker .ui-helper-hidden{display:none}.tribe-ui-datepicker .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-ui-datepicker .ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.tribe-ui-datepicker .ui-helper-clearfix:after,.tribe-ui-datepicker .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.tribe-ui-datepicker .ui-helper-clearfix:after{clear:both}.tribe-ui-datepicker .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.tribe-ui-datepicker .ui-front{z-index:100}.tribe-ui-datepicker.ui-datepicker-rtl{direction:rtl}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group{float:right}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}
1
+ .tribe-ui-datepicker.ui-datepicker body,.tribe-ui-datepicker.ui-datepicker button,.tribe-ui-datepicker.ui-datepicker input,.tribe-ui-datepicker.ui-datepicker select,.tribe-ui-datepicker.ui-datepicker textarea{font-family:Verdana,Helvetica Neue,Helvetica,Arial,sans-serif}.tribe-ui-datepicker.ui-datepicker table{border:none}.tribe-ui-datepicker .ui-datepicker-month{font-weight:700}.tribe-ui-datepicker .ui-state-disabled{cursor:default!important;pointer-events:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-group span.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25rem;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;background-image:none}.tribe-ui-datepicker .ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.tribe-ui-datepicker.ui-datepicker{background:#fff;box-shadow:1px 1px 5px rgba(0,0,0,.5);width:17em;padding:1em;display:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-header{margin-bottom:1rem;position:relative;padding:0;border:0;background-color:transparent;background-image:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next,.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev{position:absolute;top:50%;transform:translateY(-50%);line-height:1.8em;text-align:center}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:before{color:#b1b1b1;content:"\2190";cursor:pointer}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev:hover:before{color:#000}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:before{color:#b1b1b1;content:"\2192";cursor:pointer}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next:hover:before{color:#000}.tribe-ui-datepicker .ui-datepicker-next-hover,.tribe-ui-datepicker .ui-datepicker-prev-hover{color:darken(#b1b1b1,10%);border:0;background:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev{left:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next{right:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-prev-hover{left:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-next-hover{right:1px}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8;text-align:center}.tribe-ui-datepicker select.ui-datepicker-month,.tribe-ui-datepicker select.ui-datepicker-year{border:none;box-shadow:0 1px 0 rgba(0,0,0,.1);margin-right:1px;width:4.5rem}.tribe-ui-datepicker.ui-datepicker table{width:100%;font-size:.9rem;border-collapse:collapse;margin:0 0 .4rem}.tribe-ui-datepicker.ui-datepicker th{color:#b1b1b1;padding:.7rem .3rem;text-align:center;border:0}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-calendar td{border:1px solid #ddd;padding:1px}.tribe-ui-datepicker.ui-datepicker td.ui-datepicker-unselectable{border:none}.tribe-ui-datepicker.ui-datepicker a.ui-state-active{background:#0085ba;color:#fff}.tribe-ui-datepicker.ui-datepicker td a,.tribe-ui-datepicker.ui-datepicker td span{display:block;padding:.5rem .2rem;text-align:center;text-decoration:none}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7rem 0 0;padding:0 .2rem;border-left:0;border-right:0;border-bottom:0}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5rem .2rem .4rem;cursor:pointer;padding:.2rem .6rem .3rem;width:auto;overflow:visible}.tribe-ui-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;background:#fff;border:1px solid #b1b1b1}.tribe-ui-datepicker.ui-datepicker button.ui-datepicker-close{background:linear-gradient(354deg,#0a55a0,#1288eb);border:1px solid #0085ba;color:#fff!important;font-weight:400}.tribe-ui-datepicker.ui-datepicker.ui-datepicker-multi{width:auto}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group{float:left}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4rem}.tribe-ui-datepicker.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.tribe-ui-datepicker.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.tribe-ui-datepicker.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.tribe-ui-datepicker.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.tribe-ui-datepicker .ui-datepicker-row-break{clear:both;width:100%;font-size:0}.tribe-ui-datepicker.ui-widget{font-size:1.2rem;font-family:inherit}.tribe-ui-datepicker.ui-widget .ui-widget,.tribe-ui-datepicker.ui-widget button,.tribe-ui-datepicker.ui-widget input,.tribe-ui-datepicker.ui-widget select,.tribe-ui-datepicker.ui-widget textarea{font-size:1rem}.tribe-ui-datepicker.ui-widget-content a,.tribe-ui-datepicker .ui-widget-header a{color:#23282d}.tribe-ui-datepicker .ui-button,.tribe-ui-datepicker .ui-state-default,.tribe-ui-datepicker.ui-widget-content .ui-state-default,.tribe-ui-datepicker .ui-widget-header .ui-state-default,html .tribe-ui-datepicker .ui-button.ui-state-disabled:active,html .tribe-ui-datepicker .ui-button.ui-state-disabled:hover{color:#23282d;border:0;background-color:transparent;background-image:none}.tribe-ui-datepicker .ui-button,.tribe-ui-datepicker .ui-state-default a,.tribe-ui-datepicker .ui-state-default a:link,.tribe-ui-datepicker .ui-state-default a:visited,.tribe-ui-datepicker a.ui-button,.tribe-ui-datepicker a:link.ui-button,.tribe-ui-datepicker a:visited.ui-button{color:#23282d;text-decoration:none}.tribe-ui-datepicker .ui-button:focus,.tribe-ui-datepicker .ui-button:hover,.tribe-ui-datepicker .ui-state-focus,.tribe-ui-datepicker .ui-state-hover,.tribe-ui-datepicker .ui-widget-content .ui-state-focus,.tribe-ui-datepicker .ui-widget-content .ui-state-hover,.tribe-ui-datepicker .ui-widget-header .ui-state-focus,.tribe-ui-datepicker .ui-widget-header .ui-state-hover{color:#000;border:0;background:none}.tribe-ui-datepicker .ui-state-focus a,.tribe-ui-datepicker .ui-state-focus a:hover,.tribe-ui-datepicker .ui-state-focus a:link,.tribe-ui-datepicker .ui-state-focus a:visited,.tribe-ui-datepicker .ui-state-hover a,.tribe-ui-datepicker .ui-state-hover a:hover,.tribe-ui-datepicker .ui-state-hover a:link,.tribe-ui-datepicker .ui-state-hover a:visited,.tribe-ui-datepicker a.ui-button:focus,.tribe-ui-datepicker a.ui-button:hover{color:#b1b1b1;text-decoration:none;background-color:none;background-image:none}.tribe-ui-datepicker .ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.tribe-ui-datepicker .ui-button.ui-state-active:hover,.tribe-ui-datepicker .ui-button:active,.tribe-ui-datepicker .ui-state-active,.tribe-ui-datepicker .ui-widget-content .ui-state-active,.tribe-ui-datepicker .ui-widget-header .ui-state-active,.tribe-ui-datepicker a.ui-button:active{background:linear-gradient(354deg,#0a55a0,#1288eb);color:#fff}.tribe-ui-datepicker .ui-icon-background,.tribe-ui-datepicker .ui-state-active .ui-icon-background{border:#ddd;background-color:#1c94c4}.tribe-ui-datepicker .ui-state-active a,.tribe-ui-datepicker .ui-state-active a:link,.tribe-ui-datepicker .ui-state-active a:visited{color:#23282d;text-decoration:none}.tribe-ui-datepicker .ui-state-highlight,.tribe-ui-datepicker.ui-widget-content .ui-state-highlight,.tribe-ui-datepicker .ui-widget-header .ui-state-highlight{background:#fff;color:#363636;border:0;background-image:none}.tribe-ui-datepicker .ui-state-checked{background:#fff}.tribe-ui-datepicker .ui-state-highlight a,.tribe-ui-datepicker.ui-widget-content .ui-state-highlight a,.tribe-ui-datepicker .ui-widget-header .ui-state-highlight a{color:#363636}.tribe-ui-datepicker .ui-state-error,.tribe-ui-datepicker.ui-widget-content .ui-state-error,.tribe-ui-datepicker .ui-widget-header .ui-state-error{background:#b81900;color:#fff}.tribe-ui-datepicker .ui-state-error-text,.tribe-ui-datepicker .ui-state-error a,.tribe-ui-datepicker.ui-widget-content .ui-state-error-text,.tribe-ui-datepicker.ui-widget-content .ui-state-error a,.tribe-ui-datepicker .ui-widget-header .ui-state-error-text,.tribe-ui-datepicker .ui-widget-header .ui-state-error a{color:#fff}.tribe-ui-datepicker .ui-priority-secondary,.tribe-ui-datepicker.ui-widget-content .ui-priority-secondary,.tribe-ui-datepicker .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.tribe-ui-datepicker .ui-state-disabled,.tribe-ui-datepicker.ui-widget-content .ui-state-disabled,.tribe-ui-datepicker .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.tribe-ui-datepicker .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-left,.tribe-ui-datepicker .ui-corner-tl,.tribe-ui-datepicker .ui-corner-top{border-top-left-radius:4px}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-right,.tribe-ui-datepicker .ui-corner-top,.tribe-ui-datepicker .ui-corner-tr{border-top-right-radius:4px}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-bl,.tribe-ui-datepicker .ui-corner-bottom,.tribe-ui-datepicker .ui-corner-left{border-bottom-left-radius:4px}.tribe-ui-datepicker .ui-corner-all,.tribe-ui-datepicker .ui-corner-bottom,.tribe-ui-datepicker .ui-corner-br,.tribe-ui-datepicker .ui-corner-right{border-bottom-right-radius:4px}.tribe-ui-datepicker .ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.tribe-ui-datepicker .ui-widget-shadow{box-shadow:-5px -5px 5px #000}.tribe-ui-datepicker .ui-helper-hidden{display:none}.tribe-ui-datepicker .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-ui-datepicker .ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.tribe-ui-datepicker .ui-helper-clearfix:after,.tribe-ui-datepicker .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.tribe-ui-datepicker .ui-helper-clearfix:after{clear:both}.tribe-ui-datepicker .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.tribe-ui-datepicker .ui-front{z-index:100}.tribe-ui-datepicker.ui-datepicker-rtl{direction:rtl}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group{float:right}.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.tribe-ui-datepicker.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}
common/src/resources/css/dependency.css CHANGED
@@ -13,18 +13,18 @@
13
  display: none;
14
  }
15
  .tribe-dependent.tribe-active {
16
- display: inline-block;
17
- }
18
  div.tribe-dependent.tribe-active {
19
- display: block;
20
- }
21
  div.tribe-dependent.tribe-active.select2-container {
22
- display: inline-block;
23
- }
24
  td.tribe-dependent.tribe-active,
25
  th.tribe-dependent.tribe-active {
26
- display: table-cell;
27
- }
28
  tr.tribe-dependent.tribe-active {
29
- display: table-row;
30
- }
13
  display: none;
14
  }
15
  .tribe-dependent.tribe-active {
16
+ display: inline-block;
17
+ }
18
  div.tribe-dependent.tribe-active {
19
+ display: block;
20
+ }
21
  div.tribe-dependent.tribe-active.select2-container {
22
+ display: inline-block;
23
+ }
24
  td.tribe-dependent.tribe-active,
25
  th.tribe-dependent.tribe-active {
26
+ display: table-cell;
27
+ }
28
  tr.tribe-dependent.tribe-active {
29
+ display: table-row;
30
+ }
common/src/resources/css/tribe-common-admin.css CHANGED
@@ -122,8 +122,8 @@ table.plugins .tribe-plugin-update-message a {
122
  max-width: 500px;
123
  }
124
  .tribe-settings-form .tribe-field-wrap *:first-child {
125
- margin-top: 0;
126
- }
127
  .tribe-settings-form .tribe-field-radio label,
128
  .tribe-settings-form .tribe-field-checkbox_list label {
129
  display: block;
@@ -259,8 +259,8 @@ table.plugins .tribe-plugin-update-message a {
259
  max-width: 600px;
260
  }
261
  .tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{
262
- max-width: 100%;
263
- }
264
  .tribe-field-dropdown_chosen.tribe-size-small select {
265
  width: 100px;
266
  }
@@ -271,27 +271,27 @@ table.plugins .tribe-plugin-update-message a {
271
  width: 300px;
272
  }
273
  .tribe-field-wrap .tooltip:first-child {
274
- font-style: normal;
275
- }
276
  .tribe-field.indent {
277
- margin-left: 252px;
278
- width: 75%;
279
- }
280
  .tribe-field.indent legend {
281
- font-weight: normal;
282
- width: auto;
283
- }
284
  .tribe-field.indent .tribe-field-wrap {
285
- padding-right: 12px;
286
- }
287
  .tribe-field.indent.tribe-field-radio .tribe-field-wrap {
288
- clear: left;
289
- margin-top: 12px;
290
- }
291
  .tribe-field.light-bordered {
292
- background-color: white;
293
- border: solid lightgrey 1px;
294
- }
295
  /* license keys */
296
  .ajax-loading-license,
297
  .valid-key,
@@ -452,25 +452,23 @@ table.plugins .tribe-plugin-update-message a {
452
  list-style: circle;
453
  }
454
  #tribe-log-controls {
455
- padding-bottom: 16px;
456
  padding-bottom: 1rem;
457
 
458
  /* For consistency with help screen h3 and p elements */
459
  padding-left: 12px;
460
  }
461
  #tribe-log-controls > div {
462
- display: inline-block;
463
- padding-right: 16px;
464
- padding-right: 1rem;
465
- }
466
  #tribe-log-controls .working {
467
- opacity: 1;
468
- transition: opacity 0.2s;
469
- }
470
  #tribe-log-controls .working.hidden {
471
- opacity: 0;
472
- transition: opacity 0.2s;
473
- }
474
  #tribe-system-info dl.support-stats,
475
  #tribe-log-viewer,
476
  .template-updates-wrapper {
@@ -495,11 +493,11 @@ table.plugins .tribe-plugin-update-message a {
495
  padding-left: 10px;
496
  }
497
  .system-info-copy .system-info-copy-btn {
498
- padding: 6px;
499
- }
500
  .system-info-copy .system-info-copy-btn .dashicons {
501
- padding-right: 10px;
502
- }
503
  .template-updates-wrapper p {
504
  margin-top: 0;
505
  }
@@ -853,15 +851,12 @@ a.tribe-rating-link {
853
  .tribe-update-bar .progress {
854
  border: 1px solid #ccc;
855
  float: left;
856
- margin-right: 16px;
857
  margin-right: 1rem;
858
  padding: 1px;
859
- width: 288px;
860
  width: 18rem;
861
  }
862
  .tribe-update-bar .progress .bar {
863
  background: #ffba00;
864
- height: 16px;
865
  height: 1rem;
866
  width: 1%;
867
  }
@@ -871,43 +866,42 @@ a.tribe-rating-link {
871
  /* = Modals/thickbox dialogs
872
  ============================ */
873
  #tribe-dialog-wrapper > div {
874
- padding: 16px;
875
- padding: 1rem;
876
- }
877
  #tribe-dialog-wrapper > div .stage {
878
- display: none;
879
- }
880
  #tribe-dialog-wrapper #heading {
881
- background: white;
882
- }
883
  #tribe-dialog-wrapper label {
884
- display: block;
885
- }
886
  #tribe-dialog-wrapper .select-single-container {
887
- border: 1px solid #888;
888
- overflow-y: scroll;
889
- height: 300px;
890
- }
891
  #tribe-dialog-wrapper .select-single-container label {
892
- opacity: 1;
893
- padding: 3px 5px;
894
- transition: opacity 0.2s;
895
- }
896
  #tribe-dialog-wrapper .select-single-container label:nth-child(odd) {
897
- background: white;
898
- }
899
  #tribe-dialog-wrapper .select-single-container label.selected {
900
- background: #0073aa;
901
- color: white;
902
- font-weight: bold;
903
- }
904
  #tribe-dialog-wrapper .select-single-container label input {
905
- display: none;
906
- }
907
  #tribe-dialog-wrapper .select-single-container.updating label {
908
- opacity: 0.35;
909
- transition: opacity 0.2s;
910
- }
911
  /* Useful to ensure modals rise above the grey 'miasma' */
912
  .ui-front {
913
  z-index: 1000000;
@@ -917,248 +911,246 @@ a.tribe-rating-link {
917
  top: 6px;
918
  }
919
  .wp-list-table.plugins .column-description .update-message {
920
- color: #d54e21;
921
- }
922
  .api-check {
923
  padding: 1em;
924
  }
925
  .api-check + .notice-dismiss:hover:before {
926
- color: #fff;
927
- }
928
  .api-check:before,
929
  .api-check:after {
930
- content: '';
931
- display: table;
932
- }
933
  .api-check:after {
934
- clear: both;
935
- }
936
  .api-check .tribe-mascot {
937
- bottom: 0;
938
- display: none;
939
- padding: 16px;
940
- padding: 1rem;
941
- position: absolute;
942
- right: 0;
943
- top: 0;
944
- width: 125px;
945
- }
946
  .api-check .tribe-mascot:before {
947
- content: '';
948
- display: inline-block;
949
- height: 100%;
950
- width: 1%;
951
- vertical-align: middle;
952
- }
953
  .api-check .tribe-mascot img {
954
- display: inline-block;
955
- max-height: 100%;
956
- max-width: 96%;
957
- vertical-align: middle;
958
- }
959
  .api-check p {
960
- line-height: 1.7;
961
- margin-bottom: 1em;
962
- }
963
  .api-check a {
964
- text-decoration: none;
965
- }
966
  .api-check a:hover {
967
- text-decoration: underline;
968
- }
969
  .api-check .plugin-list {
970
- display: inline;
971
- font-weight: 600;
972
- margin: 0;
973
- padding: 0;
974
- }
975
  .api-check .plugin-list span.plugin-invalid:after {
976
- content: ', ';
977
- }
978
  .api-check .plugin-list span.plugin-invalid:last-of-type:after {
979
- content: '';
980
- }
981
  .tribe-marketing-notice {
982
  padding: 1em;
983
  }
984
  .tribe-marketing-notice + .notice-dismiss:hover:before {
985
- color: #fff;
986
- }
987
  .tribe-marketing-notice:before,
988
  .tribe-marketing-notice:after {
989
- content: '';
990
- display: table;
991
- }
992
  .tribe-marketing-notice:after {
993
- clear: both;
994
- }
995
  .tribe-marketing-notice .tribe-notice-icon {
996
- bottom: 0;
997
- display: none;
998
- padding: 16px;
999
- padding: 1rem;
1000
- position: absolute;
1001
- left: 0;
1002
- top: 0;
1003
- width: 125px;
1004
- }
1005
  .tribe-marketing-notice .tribe-notice-icon:before {
1006
- content: '';
1007
- display: inline-block;
1008
- height: 100%;
1009
- width: 1%;
1010
- vertical-align: middle;
1011
- }
1012
  .tribe-marketing-notice .tribe-notice-icon img {
1013
- display: inline-block;
1014
- max-height: 100%;
1015
- max-width: 96%;
1016
- vertical-align: middle;
1017
- }
1018
  .tribe-marketing-notice h3 {
1019
- margin-bottom: 0.5em;
1020
- margin-top: 0.5em;
1021
- }
1022
  .tribe-marketing-notice p {
1023
- line-height: 1.7;
1024
- margin-bottom: 0.5em;
1025
- }
1026
  .tribe-marketing-notice a {
1027
- text-decoration: none;
1028
- }
1029
  .tribe-marketing-notice a:hover {
1030
- text-decoration: underline;
1031
- }
1032
  .tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary {
1033
- margin: 10px 10px 0 0;
1034
- }
1035
  .tribe-ea-dropdown,
1036
  .tribe-dropdown {
1037
  max-width: 100%;
1038
  width: auto;
1039
  }
1040
  .tribe-ea-dropdown.select2-container-active .select2-choice, .tribe-dropdown.select2-container-active .select2-choice {
1041
- border-color: #5897fb;
1042
- box-shadow: 0 0 5px rgba(0, 0, 0, .1);
1043
- }
1044
  .tribe-ea-dropdown.select2-dropdown-open .select2-choice, .tribe-dropdown.select2-dropdown-open .select2-choice {
1045
- border-bottom-left-radius: 0;
1046
- border-bottom-right-radius: 0;
1047
- border-color: #aaa;
1048
- }
1049
  .tribe-ea-dropdown .select2-choice, .tribe-dropdown .select2-choice {
1050
- background-image: none;
1051
- border-radius: 3px;
1052
- border: 1px solid #ccc;
1053
- }
1054
  .tribe-ea-dropdown .select2-choice > .select2-chosen, .tribe-dropdown .select2-choice > .select2-chosen {
1055
- white-space: normal;
1056
- }
1057
  .tribe-ea-dropdown .select2-choice .select2-arrow, .tribe-dropdown .select2-choice .select2-arrow {
1058
- background-image: none;
1059
- background: transparent;
1060
- border-left: 0;
1061
- }
1062
  .tribe-ea-dropdown .select2-choice div, .tribe-dropdown .select2-choice div {
1063
- background-image: none;
1064
- background: none;
1065
- border-left: 0;
1066
- }
1067
  .tribe-ea-dropdown.select2-container-multi .select2-choices, .tribe-dropdown.select2-container-multi .select2-choices {
1068
- background-image: none;
1069
- border-radius: 3px;
1070
- border: 1px solid #ccc;
1071
- min-height: 25px;
1072
- }
1073
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-field {
1074
- line-height: 25px;
1075
- }
1076
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field input, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-field input {
1077
- padding-top: 0;
1078
- padding-bottom: 0;
1079
- }
1080
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice {
1081
- margin-top: 2px;
1082
- padding-top: 0;
1083
- padding-bottom: 0;
1084
- line-height: 19px;
1085
- }
1086
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice div, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice div {
1087
- line-height: inherit;
1088
- }
1089
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice-close, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice-close {
1090
- top: 3px;
1091
- left: 4px;
1092
- transition-property: border,color;
1093
- }
1094
  .select2-results .select2-selected {
1095
- display: block;
1096
- }
1097
  .select2-results .select2-selected > .select2-result-label {
1098
- background-color: #efefef;
1099
- color: #a1a1a1;
1100
- cursor: default;
1101
- }
1102
  .select2-results li.select2-result-with-children > .select2-result-label {
1103
- font-weight: normal;
1104
- }
1105
  .select2-results li.select2-result-with-children.select2-selected {
1106
- display: block;
1107
- }
1108
  .select2-results li.select2-result-with-children.select2-selected .select2-result {
1109
- display: block;
1110
- }
1111
  .select2-results li.select2-result-with-children.select2-selected > .select2-result-label {
1112
- background-color: #efefef;
1113
- color: #a1a1a1;
1114
- cursor: default;
1115
- }
1116
  .select2-results li.select2-result-with-children.select2-result-unselectable > .select2-result-label {
1117
- color: #939393;
1118
- font-weight: normal;
1119
- }
1120
  /*
1121
  Red button styles.
1122
 
1123
  Credit to https://github.com/jensjns/wp-admin-red-button
1124
  =============================================*/
1125
  .wp-core-ui .button-red {
1126
- -webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5);
1127
  background-color: #a00;
1128
  border-bottom-color: #8D1F21;
1129
  border-color: #9B2124;
1130
- box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5);
1131
  color: #fff;
1132
  text-decoration: none;
1133
- text-shadow: 0 1px 0 rgba(0, 0, 0, .1);
1134
  }
1135
  .wp-core-ui .button-red.hover,
1136
  .wp-core-ui .button-red:hover,
1137
  .wp-core-ui .button-red.focus,
1138
  .wp-core-ui .button-red:focus {
1139
- -webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .6);
1140
  background-color: #a00;
1141
  border-color: #7F1C1F;
1142
- box-shadow: inset 0 1px 0 rgba(120, 200, 230, .6);
1143
  color: #fff;
1144
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .3);
1145
  }
1146
  .wp-core-ui .button-red.focus,
1147
  .wp-core-ui .button-red:focus {
1148
- -webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .6), 1px 1px 2px rgba(0, 0, 0, .4);
1149
  border-color: #500F0E;
1150
- box-shadow: inset 0 1px 0 rgba(120, 200, 230, .6), 1px 1px 2px rgba(0, 0, 0, .4);
1151
  }
1152
  .wp-core-ui .button-red.active,
1153
  .wp-core-ui .button-red.active:hover,
1154
  .wp-core-ui .button-red.active:focus,
1155
  .wp-core-ui .button-red:active {
1156
- -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
1157
  background: #7F1C1F;
1158
  border-color: #601312 #AE2426 #AE2426 #AE2426;
1159
- box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
1160
- color: rgba(255, 255, 255, .95);
1161
- text-shadow: 0 1px 0 rgba(0, 0, 0, .1);
1162
  }
1163
  .wp-core-ui .button-red[disabled],
1164
  .wp-core-ui .button-red:disabled,
@@ -1167,45 +1159,53 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1167
  background: #BA292B !important;
1168
  border-color: #7F1C1F !important;
1169
  box-shadow: none !important;
1170
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .1) !important;
1171
  cursor: default;
1172
  }
1173
  .ticket_form .select2-container .select2-choice .select2-arrow {
1174
- display: none;
1175
- }
1176
  /* Clearfix Utility */
1177
  .clear {
1178
  zoom: 1;
1179
  }
1180
  .clear:after,
1181
  .clear:before {
1182
- content: " ";
1183
- display: table;
1184
- }
1185
  .clear:after {
1186
- clear: both;
1187
- }
1188
  /* from https://codepen.io/lajlev/pen/diKbz */
1189
- .checkmark:after {/*Add another block-level blank space*/
1190
- content: '';
1191
- display: block;/*Make it a small rectangle so the border will create an L-shape*/
1192
- width: 8px;
1193
- height: 15px;/*Add a white border on the bottom and left, creating that 'L' */
1194
- border: solid #0AB152;
1195
- border-width: 0 3px 3px 0;/*Rotate the L 45 degrees to turn it into a checkmark*/
1196
- transform: rotate(45deg);
1197
- }
 
 
 
 
 
 
 
 
1198
  .checkmark.checkmark-right:after {
1199
- float: right;
1200
- margin-right: 2em;
1201
- }
1202
  .checkmark.checkmark-left:after {
1203
- float: left;
1204
- margin-left: 2em;
1205
- }
1206
  .checkmark.no-checkmark:after {
1207
- display: none;
1208
- }
1209
  .complete, .ok, .yes, .on,
1210
  [data-status="complete"],
1211
  [data-status="ok"],
@@ -1253,8 +1253,8 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1253
  .plugin-card-image-widget-plus .column-rating,
1254
  .plugin-card-image-widget-plus .column-updated,
1255
  .plugin-card-image-widget-plus .column-downloaded {
1256
- display: none;
1257
- }
1258
  @media
1259
  only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
1260
  #tribe-loading span {
@@ -1267,6 +1267,7 @@ only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device
1267
  margin: 0 0 20px 0;
1268
  width: 100%;
1269
  }
 
1270
  input[type='email'] {
1271
  width: 100%;
1272
  }
@@ -1275,48 +1276,53 @@ only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device
1275
  .events-cal .subsubsub {
1276
  float: none;
1277
  }
 
1278
  .events-cal .search-box {
1279
  width: 98%;
1280
  }
 
1281
  .events-cal #search-submit {
1282
  width: 100%;
1283
  }
 
1284
  .events-cal .tablenav.top {
1285
  display: none;
1286
  }
1287
  }
1288
  @media screen and (min-width: 500px) {
1289
- .api-check .tribe-mascot {
1290
- display: block;
1291
  }
1292
- .api-check .notice-content {
1293
- margin-right: 180px;
1294
  }
1295
- }
1296
  @media screen and (min-width: 600px) and (max-width: 782px ) {
1297
- .tribe-marketing-notice .tribe-notice-icon {
1298
- width: 135px;
1299
  }
1300
- .tribe-marketing-notice .tribe-notice-content {
1301
- margin-left: 145px;
1302
  }
1303
- }
1304
  @media screen and (min-width: 600px) {
1305
- .tribe-marketing-notice .tribe-notice-icon {
1306
- display: block;
1307
  }
1308
- }
1309
  @media screen and (min-width: 782px) {
1310
- .tribe-marketing-notice .tribe-notice-content {
1311
- margin-left: 130px;
1312
  }
1313
- }
1314
  @media screen and (max-width: 956px) {
1315
- .tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary {
1316
- margin: 0 0 10px 0;
1317
- }
1318
- .tribe-marketing-notice.tribe-bf-2018-tec em {
1319
- clear: both;
1320
- display: block;
1321
- }
1322
- }
 
 
122
  max-width: 500px;
123
  }
124
  .tribe-settings-form .tribe-field-wrap *:first-child {
125
+ margin-top: 0;
126
+ }
127
  .tribe-settings-form .tribe-field-radio label,
128
  .tribe-settings-form .tribe-field-checkbox_list label {
129
  display: block;
259
  max-width: 600px;
260
  }
261
  .tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{
262
+ max-width: 100%;
263
+ }
264
  .tribe-field-dropdown_chosen.tribe-size-small select {
265
  width: 100px;
266
  }
271
  width: 300px;
272
  }
273
  .tribe-field-wrap .tooltip:first-child {
274
+ font-style: normal;
275
+ }
276
  .tribe-field.indent {
277
+ margin-left: 252px;
278
+ width: 75%;
279
+ }
280
  .tribe-field.indent legend {
281
+ font-weight: normal;
282
+ width: auto;
283
+ }
284
  .tribe-field.indent .tribe-field-wrap {
285
+ padding-right: 12px;
286
+ }
287
  .tribe-field.indent.tribe-field-radio .tribe-field-wrap {
288
+ clear: left;
289
+ margin-top: 12px;
290
+ }
291
  .tribe-field.light-bordered {
292
+ background-color: white;
293
+ border: solid lightgrey 1px;
294
+ }
295
  /* license keys */
296
  .ajax-loading-license,
297
  .valid-key,
452
  list-style: circle;
453
  }
454
  #tribe-log-controls {
 
455
  padding-bottom: 1rem;
456
 
457
  /* For consistency with help screen h3 and p elements */
458
  padding-left: 12px;
459
  }
460
  #tribe-log-controls > div {
461
+ display: inline-block;
462
+ padding-right: 1rem;
463
+ }
 
464
  #tribe-log-controls .working {
465
+ opacity: 1;
466
+ transition: opacity 0.2s;
467
+ }
468
  #tribe-log-controls .working.hidden {
469
+ opacity: 0;
470
+ transition: opacity 0.2s;
471
+ }
472
  #tribe-system-info dl.support-stats,
473
  #tribe-log-viewer,
474
  .template-updates-wrapper {
493
  padding-left: 10px;
494
  }
495
  .system-info-copy .system-info-copy-btn {
496
+ padding: 6px;
497
+ }
498
  .system-info-copy .system-info-copy-btn .dashicons {
499
+ padding-right: 10px;
500
+ }
501
  .template-updates-wrapper p {
502
  margin-top: 0;
503
  }
851
  .tribe-update-bar .progress {
852
  border: 1px solid #ccc;
853
  float: left;
 
854
  margin-right: 1rem;
855
  padding: 1px;
 
856
  width: 18rem;
857
  }
858
  .tribe-update-bar .progress .bar {
859
  background: #ffba00;
 
860
  height: 1rem;
861
  width: 1%;
862
  }
866
  /* = Modals/thickbox dialogs
867
  ============================ */
868
  #tribe-dialog-wrapper > div {
869
+ padding: 1rem;
870
+ }
 
871
  #tribe-dialog-wrapper > div .stage {
872
+ display: none;
873
+ }
874
  #tribe-dialog-wrapper #heading {
875
+ background: white;
876
+ }
877
  #tribe-dialog-wrapper label {
878
+ display: block;
879
+ }
880
  #tribe-dialog-wrapper .select-single-container {
881
+ border: 1px solid #888;
882
+ overflow-y: scroll;
883
+ height: 300px;
884
+ }
885
  #tribe-dialog-wrapper .select-single-container label {
886
+ opacity: 1;
887
+ padding: 3px 5px;
888
+ transition: opacity 0.2s;
889
+ }
890
  #tribe-dialog-wrapper .select-single-container label:nth-child(odd) {
891
+ background: white;
892
+ }
893
  #tribe-dialog-wrapper .select-single-container label.selected {
894
+ background: #0073aa;
895
+ color: white;
896
+ font-weight: bold;
897
+ }
898
  #tribe-dialog-wrapper .select-single-container label input {
899
+ display: none;
900
+ }
901
  #tribe-dialog-wrapper .select-single-container.updating label {
902
+ opacity: 0.35;
903
+ transition: opacity 0.2s;
904
+ }
905
  /* Useful to ensure modals rise above the grey 'miasma' */
906
  .ui-front {
907
  z-index: 1000000;
911
  top: 6px;
912
  }
913
  .wp-list-table.plugins .column-description .update-message {
914
+ color: #d54e21;
915
+ }
916
  .api-check {
917
  padding: 1em;
918
  }
919
  .api-check + .notice-dismiss:hover:before {
920
+ color: #fff;
921
+ }
922
  .api-check:before,
923
  .api-check:after {
924
+ content: '';
925
+ display: table;
926
+ }
927
  .api-check:after {
928
+ clear: both;
929
+ }
930
  .api-check .tribe-mascot {
931
+ bottom: 0;
932
+ display: none;
933
+ padding: 1rem;
934
+ position: absolute;
935
+ right: 0;
936
+ top: 0;
937
+ width: 125px;
938
+ }
 
939
  .api-check .tribe-mascot:before {
940
+ content: '';
941
+ display: inline-block;
942
+ height: 100%;
943
+ width: 1%;
944
+ vertical-align: middle;
945
+ }
946
  .api-check .tribe-mascot img {
947
+ display: inline-block;
948
+ max-height: 100%;
949
+ max-width: 96%;
950
+ vertical-align: middle;
951
+ }
952
  .api-check p {
953
+ line-height: 1.7;
954
+ margin-bottom: 1em;
955
+ }
956
  .api-check a {
957
+ text-decoration: none;
958
+ }
959
  .api-check a:hover {
960
+ text-decoration: underline;
961
+ }
962
  .api-check .plugin-list {
963
+ display: inline;
964
+ font-weight: 600;
965
+ margin: 0;
966
+ padding: 0;
967
+ }
968
  .api-check .plugin-list span.plugin-invalid:after {
969
+ content: ', ';
970
+ }
971
  .api-check .plugin-list span.plugin-invalid:last-of-type:after {
972
+ content: '';
973
+ }
974
  .tribe-marketing-notice {
975
  padding: 1em;
976
  }
977
  .tribe-marketing-notice + .notice-dismiss:hover:before {
978
+ color: #fff;
979
+ }
980
  .tribe-marketing-notice:before,
981
  .tribe-marketing-notice:after {
982
+ content: '';
983
+ display: table;
984
+ }
985
  .tribe-marketing-notice:after {
986
+ clear: both;
987
+ }
988
  .tribe-marketing-notice .tribe-notice-icon {
989
+ bottom: 0;
990
+ display: none;
991
+ padding: 1rem;
992
+ position: absolute;
993
+ left: 0;
994
+ top: 0;
995
+ width: 125px;
996
+ }
 
997
  .tribe-marketing-notice .tribe-notice-icon:before {
998
+ content: '';
999
+ display: inline-block;
1000
+ height: 100%;
1001
+ width: 1%;
1002
+ vertical-align: middle;
1003
+ }
1004
  .tribe-marketing-notice .tribe-notice-icon img {
1005
+ display: inline-block;
1006
+ max-height: 100%;
1007
+ max-width: 96%;
1008
+ vertical-align: middle;
1009
+ }
1010
  .tribe-marketing-notice h3 {
1011
+ margin-bottom: 0.5em;
1012
+ margin-top: 0.5em;
1013
+ }
1014
  .tribe-marketing-notice p {
1015
+ line-height: 1.7;
1016
+ margin-bottom: 0.5em;
1017
+ }
1018
  .tribe-marketing-notice a {
1019
+ text-decoration: none;
1020
+ }
1021
  .tribe-marketing-notice a:hover {
1022
+ text-decoration: underline;
1023
+ }
1024
  .tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary {
1025
+ margin: 10px 10px 0 0;
1026
+ }
1027
  .tribe-ea-dropdown,
1028
  .tribe-dropdown {
1029
  max-width: 100%;
1030
  width: auto;
1031
  }
1032
  .tribe-ea-dropdown.select2-container-active .select2-choice, .tribe-dropdown.select2-container-active .select2-choice {
1033
+ border-color: #5897fb;
1034
+ box-shadow: 0 0 5px rgba( 0, 0, 0, .1 );
1035
+ }
1036
  .tribe-ea-dropdown.select2-dropdown-open .select2-choice, .tribe-dropdown.select2-dropdown-open .select2-choice {
1037
+ border-bottom-left-radius: 0;
1038
+ border-bottom-right-radius: 0;
1039
+ border-color: #aaa;
1040
+ }
1041
  .tribe-ea-dropdown .select2-choice, .tribe-dropdown .select2-choice {
1042
+ background-image: none;
1043
+ border-radius: 3px;
1044
+ border: 1px solid #ccc;
1045
+ }
1046
  .tribe-ea-dropdown .select2-choice > .select2-chosen, .tribe-dropdown .select2-choice > .select2-chosen {
1047
+ white-space: normal;
1048
+ }
1049
  .tribe-ea-dropdown .select2-choice .select2-arrow, .tribe-dropdown .select2-choice .select2-arrow {
1050
+ background-image: none;
1051
+ background: transparent;
1052
+ border-left: 0;
1053
+ }
1054
  .tribe-ea-dropdown .select2-choice div, .tribe-dropdown .select2-choice div {
1055
+ background-image: none;
1056
+ background: none;
1057
+ border-left: 0;
1058
+ }
1059
  .tribe-ea-dropdown.select2-container-multi .select2-choices, .tribe-dropdown.select2-container-multi .select2-choices {
1060
+ background-image: none;
1061
+ border-radius: 3px;
1062
+ border: 1px solid #ccc;
1063
+ min-height: 25px;
1064
+ }
1065
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-field {
1066
+ line-height: 25px;
1067
+ }
1068
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field input, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-field input {
1069
+ padding-top: 0;
1070
+ padding-bottom: 0;
1071
+ }
1072
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice {
1073
+ margin-top: 2px;
1074
+ padding-top: 0;
1075
+ padding-bottom: 0;
1076
+ line-height: 19px;
1077
+ }
1078
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice div, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice div {
1079
+ line-height: inherit;
1080
+ }
1081
  .tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice-close, .tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice-close {
1082
+ top: 3px;
1083
+ left: 4px;
1084
+ transition-property: border,color;
1085
+ }
1086
  .select2-results .select2-selected {
1087
+ display: block;
1088
+ }
1089
  .select2-results .select2-selected > .select2-result-label {
1090
+ background-color: #efefef;
1091
+ color: #a1a1a1;
1092
+ cursor: default;
1093
+ }
1094
  .select2-results li.select2-result-with-children > .select2-result-label {
1095
+ font-weight: normal;
1096
+ }
1097
  .select2-results li.select2-result-with-children.select2-selected {
1098
+ display: block;
1099
+ }
1100
  .select2-results li.select2-result-with-children.select2-selected .select2-result {
1101
+ display: block;
1102
+ }
1103
  .select2-results li.select2-result-with-children.select2-selected > .select2-result-label {
1104
+ background-color: #efefef;
1105
+ color: #a1a1a1;
1106
+ cursor: default;
1107
+ }
1108
  .select2-results li.select2-result-with-children.select2-result-unselectable > .select2-result-label {
1109
+ color: #939393;
1110
+ font-weight: normal;
1111
+ }
1112
  /*
1113
  Red button styles.
1114
 
1115
  Credit to https://github.com/jensjns/wp-admin-red-button
1116
  =============================================*/
1117
  .wp-core-ui .button-red {
1118
+ -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
1119
  background-color: #a00;
1120
  border-bottom-color: #8D1F21;
1121
  border-color: #9B2124;
1122
+ box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
1123
  color: #fff;
1124
  text-decoration: none;
1125
+ text-shadow: 0 1px 0 rgba(0,0,0,0.1);
1126
  }
1127
  .wp-core-ui .button-red.hover,
1128
  .wp-core-ui .button-red:hover,
1129
  .wp-core-ui .button-red.focus,
1130
  .wp-core-ui .button-red:focus {
1131
+ -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
1132
  background-color: #a00;
1133
  border-color: #7F1C1F;
1134
+ box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
1135
  color: #fff;
1136
+ text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
1137
  }
1138
  .wp-core-ui .button-red.focus,
1139
  .wp-core-ui .button-red:focus {
1140
+ -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1141
  border-color: #500F0E;
1142
+ box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1143
  }
1144
  .wp-core-ui .button-red.active,
1145
  .wp-core-ui .button-red.active:hover,
1146
  .wp-core-ui .button-red.active:focus,
1147
  .wp-core-ui .button-red:active {
1148
+ -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
1149
  background: #7F1C1F;
1150
  border-color: #601312 #AE2426 #AE2426 #AE2426;
1151
+ box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
1152
+ color: rgba(255,255,255,0.95);
1153
+ text-shadow: 0 1px 0 rgba(0,0,0,0.1);
1154
  }
1155
  .wp-core-ui .button-red[disabled],
1156
  .wp-core-ui .button-red:disabled,
1159
  background: #BA292B !important;
1160
  border-color: #7F1C1F !important;
1161
  box-shadow: none !important;
1162
+ text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
1163
  cursor: default;
1164
  }
1165
  .ticket_form .select2-container .select2-choice .select2-arrow {
1166
+ display: none;
1167
+ }
1168
  /* Clearfix Utility */
1169
  .clear {
1170
  zoom: 1;
1171
  }
1172
  .clear:after,
1173
  .clear:before {
1174
+ content: " ";
1175
+ display: table;
1176
+ }
1177
  .clear:after {
1178
+ clear: both;
1179
+ }
1180
  /* from https://codepen.io/lajlev/pen/diKbz */
1181
+ .checkmark:after {
1182
+ /*Add another block-level blank space*/
1183
+ content: '';
1184
+ display: block;
1185
+
1186
+ /*Make it a small rectangle so the border will create an L-shape*/
1187
+ width: 8px;
1188
+ height: 15px;
1189
+
1190
+ /*Add a white border on the bottom and left, creating that 'L' */
1191
+ border: solid #0AB152;
1192
+ border-width: 0 3px 3px 0;
1193
+
1194
+ /*Rotate the L 45 degrees to turn it into a checkmark*/
1195
+ -webkit-transform: rotate(45deg);
1196
+ transform: rotate(45deg);
1197
+ }
1198
  .checkmark.checkmark-right:after {
1199
+ float: right;
1200
+ margin-right: 2em;
1201
+ }
1202
  .checkmark.checkmark-left:after {
1203
+ float: left;
1204
+ margin-left: 2em;
1205
+ }
1206
  .checkmark.no-checkmark:after {
1207
+ display: none;
1208
+ }
1209
  .complete, .ok, .yes, .on,
1210
  [data-status="complete"],
1211
  [data-status="ok"],
1253
  .plugin-card-image-widget-plus .column-rating,
1254
  .plugin-card-image-widget-plus .column-updated,
1255
  .plugin-card-image-widget-plus .column-downloaded {
1256
+ display: none;
1257
+ }
1258
  @media
1259
  only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
1260
  #tribe-loading span {
1267
  margin: 0 0 20px 0;
1268
  width: 100%;
1269
  }
1270
+
1271
  input[type='email'] {
1272
  width: 100%;
1273
  }
1276
  .events-cal .subsubsub {
1277
  float: none;
1278
  }
1279
+
1280
  .events-cal .search-box {
1281
  width: 98%;
1282
  }
1283
+
1284
  .events-cal #search-submit {
1285
  width: 100%;
1286
  }
1287
+
1288
  .events-cal .tablenav.top {
1289
  display: none;
1290
  }
1291
  }
1292
  @media screen and (min-width: 500px) {
1293
+ .api-check .tribe-mascot {
1294
+ display: block
1295
  }
1296
+ .api-check .notice-content {
1297
+ margin-right: 180px
1298
  }
1299
+ }
1300
  @media screen and (min-width: 600px) and (max-width: 782px ) {
1301
+ .tribe-marketing-notice .tribe-notice-icon {
1302
+ width: 135px
1303
  }
1304
+ .tribe-marketing-notice .tribe-notice-content {
1305
+ margin-left: 145px
1306
  }
1307
+ }
1308
  @media screen and (min-width: 600px) {
1309
+ .tribe-marketing-notice .tribe-notice-icon {
1310
+ display: block
1311
  }
1312
+ }
1313
  @media screen and (min-width: 782px) {
1314
+ .tribe-marketing-notice .tribe-notice-content {
1315
+ margin-left: 130px
1316
  }
1317
+ }
1318
  @media screen and (max-width: 956px) {
1319
+
1320
+ .tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary {
1321
+ margin: 0 0 10px 0;
1322
+ }
1323
+
1324
+ .tribe-marketing-notice.tribe-bf-2018-tec em {
1325
+ clear: both;
1326
+ display: block;
1327
+ }
1328
+ }
common/src/resources/css/tribe-common-admin.min.css CHANGED
@@ -1 +1 @@
1
- .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input:placeholder,textarea:placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{-khtml-border-radius:3px;background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;border-style:solid;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia!important;font-size:17px!important;font-weight:400;margin:8px 0}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}.tribe-settings-form #tribe-field-stylesheetOption label{margin-left:20px}.tribe-settings-form #tribe-field-stylesheetOption input{margin-left:-20px;margin-right:8px}.tribe-settings-form #tribe-field-stylesheetOption p.description{color:#999}#modern-tribe-info{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{height:18px;margin:10px 0;width:250px}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:16px;padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:16px;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;-webkit-border-radius:5px;-moz-border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;webkit-transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page,.tribe_welcome_page{max-width:1000px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2,.tribe_welcome_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3,.tribe_welcome_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4,.tribe_welcome_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p,.tribe_welcome_page p{font-size:14px}p.tribe-welcome-message{font-size:20px;font-weight:400}.tribe_update_page h2:before,.tribe_welcome_page h2:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}.tribe-welcome-video-wrapper{height:0;margin-bottom:40px;padding-bottom:56.25%;padding-top:25px;position:relative}.tribe-welcome-video-wrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}a.tribe-rating-link{text-decoration:none}.tribe-update-links,.tribe-welcome-links{margin-top:30px}.tribe_update_page li:before,.tribe_welcome_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:16px;margin-right:1rem;padding:1px;width:288px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:16px;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:16px;padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.select2-container .select2-choice abbr{top:6px}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:16px;padding:1rem;position:absolute;right:0;top:0;width:125px}.api-check .tribe-mascot:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.api-check .tribe-mascot img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:16px;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container-active .select2-choice,.tribe-ea-dropdown.select2-container-active .select2-choice{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-dropdown-open .select2-choice,.tribe-ea-dropdown.select2-dropdown-open .select2-choice{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown .select2-choice,.tribe-ea-dropdown .select2-choice{background-image:none;border-radius:3px;border:1px solid #ccc}.tribe-dropdown .select2-choice>.select2-chosen,.tribe-ea-dropdown .select2-choice>.select2-chosen{white-space:normal}.tribe-dropdown .select2-choice .select2-arrow,.tribe-ea-dropdown .select2-choice .select2-arrow{background-image:none;background:transparent;border-left:0}.tribe-dropdown .select2-choice div,.tribe-ea-dropdown .select2-choice div{background-image:none;background:none;border-left:0}.tribe-dropdown.select2-container-multi .select2-choices,.tribe-ea-dropdown.select2-container-multi .select2-choices{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field{line-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field input,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field input{padding-top:0;padding-bottom:0}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice div,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice div{line-height:inherit}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice-close,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice-close{top:3px;left:4px;transition-property:border,color}.select2-results .select2-selected{display:block}.select2-results .select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:400}.select2-results li.select2-result-with-children.select2-selected,.select2-results li.select2-result-with-children.select2-selected .select2-result{display:block}.select2-results li.select2-result-with-children.select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children.select2-result-unselectable>.select2-result-label{color:#939393;font-weight:400}.wp-core-ui .button-red{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4);border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-choice .select2-arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}
1
+ .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input:placeholder,textarea:placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{-khtml-border-radius:3px;background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;border-style:solid;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia!important;font-size:17px!important;font-weight:400;margin:8px 0}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}.tribe-settings-form #tribe-field-stylesheetOption label{margin-left:20px}.tribe-settings-form #tribe-field-stylesheetOption input{margin-left:-20px;margin-right:8px}.tribe-settings-form #tribe-field-stylesheetOption p.description{color:#999}#modern-tribe-info{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{height:18px;margin:10px 0;width:250px}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;-webkit-border-radius:5px;-moz-border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;webkit-transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page,.tribe_welcome_page{max-width:1000px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2,.tribe_welcome_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3,.tribe_welcome_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4,.tribe_welcome_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p,.tribe_welcome_page p{font-size:14px}p.tribe-welcome-message{font-size:20px;font-weight:400}.tribe_update_page h2:before,.tribe_welcome_page h2:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}.tribe-welcome-video-wrapper{height:0;margin-bottom:40px;padding-bottom:56.25%;padding-top:25px;position:relative}.tribe-welcome-video-wrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}a.tribe-rating-link{text-decoration:none}.tribe-update-links,.tribe-welcome-links{margin-top:30px}.tribe_update_page li:before,.tribe_welcome_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.select2-container .select2-choice abbr{top:6px}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:1rem;position:absolute;right:0;top:0;width:125px}.api-check .tribe-mascot:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.api-check .tribe-mascot img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container-active .select2-choice,.tribe-ea-dropdown.select2-container-active .select2-choice{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-dropdown-open .select2-choice,.tribe-ea-dropdown.select2-dropdown-open .select2-choice{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown .select2-choice,.tribe-ea-dropdown .select2-choice{background-image:none;border-radius:3px;border:1px solid #ccc}.tribe-dropdown .select2-choice>.select2-chosen,.tribe-ea-dropdown .select2-choice>.select2-chosen{white-space:normal}.tribe-dropdown .select2-choice .select2-arrow,.tribe-ea-dropdown .select2-choice .select2-arrow{background-image:none;background:transparent;border-left:0}.tribe-dropdown .select2-choice div,.tribe-ea-dropdown .select2-choice div{background-image:none;background:none;border-left:0}.tribe-dropdown.select2-container-multi .select2-choices,.tribe-ea-dropdown.select2-container-multi .select2-choices{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field{line-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field input,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field input{padding-top:0;padding-bottom:0}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice div,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice div{line-height:inherit}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice-close,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice-close{top:3px;left:4px;transition-property:border,color}.select2-results .select2-selected{display:block}.select2-results .select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:400}.select2-results li.select2-result-with-children.select2-selected,.select2-results li.select2-result-with-children.select2-selected .select2-result{display:block}.select2-results li.select2-result-with-children.select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children.select2-result-unselectable>.select2-result-label{color:#939393;font-weight:400}.wp-core-ui .button-red{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4);border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-choice .select2-arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}
common/src/resources/css/tribe-ui.css CHANGED
@@ -8,10 +8,16 @@
8
  * @see: http://moderntribe.github.io/products-engineering/css/
9
  */
10
 
 
 
 
 
 
11
  .tribe-button {
12
  border: 0;
13
  border-radius: 3px;
14
- background: #009FF1 linear-gradient( to bottom, #009FF1, #0080DB );
 
15
  cursor: pointer;
16
  color: #fff;
17
  display: inline-block;
@@ -30,5 +36,6 @@
30
  .tribe-button:hover,
31
  .tribe-button:active,
32
  .tribe-button:focus {
33
- background: #0080DB;
34
- }
 
8
  * @see: http://moderntribe.github.io/products-engineering/css/
9
  */
10
 
11
+ :root {
12
+ --button-light-color: #009FF1;
13
+ --button-dark-color: #0080DB;
14
+ }
15
+
16
  .tribe-button {
17
  border: 0;
18
  border-radius: 3px;
19
+ background: #009FF1 linear-gradient( to bottom, #009FF1, #0080DB);
20
+ background: var(--button-light-color) linear-gradient( to bottom, var(--button-light-color), var(--button-dark-color) );
21
  cursor: pointer;
22
  color: #fff;
23
  display: inline-block;
36
  .tribe-button:hover,
37
  .tribe-button:active,
38
  .tribe-button:focus {
39
+ background: #0080DB;
40
+ background: var(--button-dark-color);
41
+ }
common/src/resources/css/tribe-ui.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-button{border:0;border-radius:3px;background:#009ff1 linear-gradient(180deg,#009ff1,#0080db);cursor:pointer;color:#fff;display:inline-block;font-size:14px;font-weight:400;font-family:sans-serif;letter-spacing:1px;line-height:1;height:auto;padding:10px;text-align:center;transition:all .15s ease-in;-webkit-font-smoothing:subpixel-antialiased}.tribe-button:active,.tribe-button:focus,.tribe-button:hover{background:#0080db}
1
+ :root{--button-light-color:#009ff1;--button-dark-color:#0080db}.tribe-button{border:0;border-radius:3px;background:#009ff1 linear-gradient(180deg,#009ff1,#0080db);background:var(--button-light-color) linear-gradient(180deg,var(--button-light-color),var(--button-dark-color));cursor:pointer;color:#fff;display:inline-block;font-size:14px;font-weight:400;font-family:sans-serif;letter-spacing:1px;line-height:1;height:auto;padding:10px;text-align:center;transition:all .15s ease-in;-webkit-font-smoothing:subpixel-antialiased}.tribe-button:active,.tribe-button:focus,.tribe-button:hover{background:#0080db;background:var(--button-dark-color)}
common/src/resources/css/validation.css CHANGED
@@ -8,15 +8,18 @@
8
  * @see: http://moderntribe.github.io/products-engineering/css/
9
  */
10
 
11
- .tribe-validation input[type="text"].tribe-validation-error, .tribe-validation input[type="password"].tribe-validation-error, .tribe-validation input[type="checkbox"].tribe-validation-error, .tribe-validation input[type="color"].tribe-validation-error, .tribe-validation input[type="date"].tribe-validation-error, .tribe-validation input[type="datetime"].tribe-validation-error, .tribe-validation input[type="datetime-local"].tribe-validation-error, .tribe-validation input[type="email"].tribe-validation-error, .tribe-validation input[type="month"].tribe-validation-error, .tribe-validation input[type="number"].tribe-validation-error, .tribe-validation input[type="search"].tribe-validation-error, .tribe-validation input[type="radio"].tribe-validation-error, .tribe-validation input[type="tel"].tribe-validation-error, .tribe-validation input[type="text"].tribe-validation-error, .tribe-validation input[type="time"].tribe-validation-error, .tribe-validation input[type="url"].tribe-validation-error, .tribe-validation input[type="week"].tribe-validation-error, .tribe-validation select.tribe-validation-error, .tribe-validation textarea.tribe-validation-error {
12
-
13
-
14
- border-color: #dc3232;
15
  }
16
 
17
 
18
- .tribe-validation .tribe-dropdown.tribe-validation-error .select2-choice {
 
 
 
19
 
20
 
21
- border-color: #dc3232;
22
- }
 
 
8
  * @see: http://moderntribe.github.io/products-engineering/css/
9
  */
10
 
11
+ :root {
12
+ --error-border-color: #dc3232;
 
 
13
  }
14
 
15
 
16
+ .tribe-validation input[type="text"].tribe-validation-error, .tribe-validation input[type="password"].tribe-validation-error, .tribe-validation input[type="checkbox"].tribe-validation-error, .tribe-validation input[type="color"].tribe-validation-error, .tribe-validation input[type="date"].tribe-validation-error, .tribe-validation input[type="datetime"].tribe-validation-error, .tribe-validation input[type="datetime-local"].tribe-validation-error, .tribe-validation input[type="email"].tribe-validation-error, .tribe-validation input[type="month"].tribe-validation-error, .tribe-validation input[type="number"].tribe-validation-error, .tribe-validation input[type="search"].tribe-validation-error, .tribe-validation input[type="radio"].tribe-validation-error, .tribe-validation input[type="tel"].tribe-validation-error, .tribe-validation input[type="text"].tribe-validation-error, .tribe-validation input[type="time"].tribe-validation-error, .tribe-validation input[type="url"].tribe-validation-error, .tribe-validation input[type="week"].tribe-validation-error, .tribe-validation select.tribe-validation-error, .tribe-validation textarea.tribe-validation-error {
17
+ border-color: #dc3232;
18
+ border-color: var(--error-border-color);
19
+ }
20
 
21
 
22
+ .tribe-validation .tribe-dropdown.tribe-validation-error .select2-choice {
23
+ border-color: #dc3232;
24
+ border-color: var(--error-border-color);
25
+ }
common/src/resources/css/validation.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-validation .tribe-dropdown.tribe-validation-error .select2-choice,.tribe-validation input[type=checkbox].tribe-validation-error,.tribe-validation input[type=color].tribe-validation-error,.tribe-validation input[type=date].tribe-validation-error,.tribe-validation input[type=datetime-local].tribe-validation-error,.tribe-validation input[type=datetime].tribe-validation-error,.tribe-validation input[type=email].tribe-validation-error,.tribe-validation input[type=month].tribe-validation-error,.tribe-validation input[type=number].tribe-validation-error,.tribe-validation input[type=password].tribe-validation-error,.tribe-validation input[type=radio].tribe-validation-error,.tribe-validation input[type=search].tribe-validation-error,.tribe-validation input[type=tel].tribe-validation-error,.tribe-validation input[type=text].tribe-validation-error,.tribe-validation input[type=time].tribe-validation-error,.tribe-validation input[type=url].tribe-validation-error,.tribe-validation input[type=week].tribe-validation-error,.tribe-validation select.tribe-validation-error,.tribe-validation textarea.tribe-validation-error{border-color:#dc3232}
1
+ :root{--error-border-color:#dc3232}.tribe-validation .tribe-dropdown.tribe-validation-error .select2-choice,.tribe-validation input[type=checkbox].tribe-validation-error,.tribe-validation input[type=color].tribe-validation-error,.tribe-validation input[type=date].tribe-validation-error,.tribe-validation input[type=datetime-local].tribe-validation-error,.tribe-validation input[type=datetime].tribe-validation-error,.tribe-validation input[type=email].tribe-validation-error,.tribe-validation input[type=month].tribe-validation-error,.tribe-validation input[type=number].tribe-validation-error,.tribe-validation input[type=password].tribe-validation-error,.tribe-validation input[type=radio].tribe-validation-error,.tribe-validation input[type=search].tribe-validation-error,.tribe-validation input[type=tel].tribe-validation-error,.tribe-validation input[type=text].tribe-validation-error,.tribe-validation input[type=time].tribe-validation-error,.tribe-validation input[type=url].tribe-validation-error,.tribe-validation input[type=week].tribe-validation-error,.tribe-validation select.tribe-validation-error,.tribe-validation textarea.tribe-validation-error{border-color:#dc3232;border-color:var(--error-border-color)}
common/src/resources/images/mascot.png CHANGED
Binary file
common/src/resources/js/admin-date-preview.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(i){i(".live-date-preview").siblings("input").change(function(){var e=i(this),n=e.val(),t=e.siblings(".live-date-preview"),a=function(e){e=i("<div/>").html(e).text(),t.html(e)};t.append("<span class='spinner'></span>"),t.find(".spinner").css("visibility","visible");var s={action:"date_format",date:n};i.post(ajaxurl,s,a,"text")})});
1
+ jQuery(document).ready(function(a){a(".live-date-preview").siblings("input").change(function(){var i=a(this),e=i.val(),n=i.siblings(".live-date-preview");n.append("<span class='spinner'></span>"),n.find(".spinner").css("visibility","visible");var t={action:"date_format",date:e};a.post(ajaxurl,t,function(i){i=a("<div/>").html(i).text(),n.html(i)},"text")})});
common/src/resources/js/admin-log-controls.min.js CHANGED
@@ -1 +1 @@
1
- var tribe_logger_admin=tribe_logger_admin||{},tribe_logger_data=tribe_logger_data||{};!function(e,t){function n(){u||(c(),d(),r())}function r(){var t={action:"tribe_logging_controls",check:tribe_logger_data.check,"log-level":e("#log-level").find(":selected").attr("name"),"log-engine":e("#log-engine").find(":selected").attr("name")};v&&(t["log-view"]=_),e.ajax(ajaxurl,{method:"POST",success:a,error:l,dataType:"json",data:t})}function a(t){g(),e.isArray(t.data.entries)&&(j.html(o(t.data.entries)),i())}function o(e){var t="<table>";for(var n in e){t+="<tr>";for(var r in e[n])t+="<td>"+e[n][r]+"</td>";t+="</tr>"}return t+"</table>"}function i(){var t=w.attr("href"),n=encodeURI(f()),r=t.match(/&log=([a-z0-9\-]+)/i);t=e.isArray(r)&&2===r.length?t.replace(r[0],"&log="+n):t.indexOf("?")?t+"&log="+n:t+"?log="+n,w.attr("href",t)}function l(){g()}function d(){u=!0,m.prop("disabled",!0),p.removeClass("hidden")}function g(){u=!1,m.prop("disabled",!1),p.addClass("hidden")}function c(){var e=f(),t=s();e!==_||t!==b?(v=!0,_=e,b=t):v=!1}function f(){return e("#log-selector").find(":selected").attr("name")}function s(){return e("#log-engine").find(":selected").attr("name")}var u=!1,_="",b="",v=!1,h=e("#tribe-log-controls"),m=h.find("select"),p=h.find(".working"),j=e("#tribe-log-viewer"),w=e("a.download_log");_=f(),b=s(),i(),m.change(n)}(jQuery,tribe_logger_admin);
1
+ var tribe_logger_admin=tribe_logger_admin||{},tribe_logger_data=tribe_logger_data||{};!function(n,e){var a=!1,o="",i="",l=!1,t=n("#tribe-log-controls"),d=t.find("select"),g=t.find(".working"),r=n("#tribe-log-viewer"),c=n("a.download_log");function s(e){v(),n.isArray(e.data.entries)&&(r.html(function(e){var t="<table>";for(var r in e){for(var n in t+="<tr>",e[r])t+="<td>"+e[r][n]+"</td>";t+="</tr>"}return t+"</table>"}(e.data.entries)),f())}function f(){var e=c.attr("href"),t=encodeURI(_()),r=e.match(/&log=([a-z0-9\-]+)/i);e=n.isArray(r)&&2===r.length?e.replace(r[0],"&log="+t):e.indexOf("?")?e+"&log="+t:e+"?log="+t,c.attr("href",e)}function u(){v()}function v(){a=!1,d.prop("disabled",!1),g.addClass("hidden")}function _(){return n("#log-selector").find(":selected").attr("name")}function b(){return n("#log-engine").find(":selected").attr("name")}o=_(),i=b(),f(),d.change(function(){var e,t;a||(e=_(),t=b(),e!==o||t!==i?(l=!0,o=e,i=t):l=!1,a=!0,d.prop("disabled",!0),g.removeClass("hidden"),r={action:"tribe_logging_controls",check:tribe_logger_data.check,"log-level":n("#log-level").find(":selected").attr("name"),"log-engine":n("#log-engine").find(":selected").attr("name")},l&&(r["log-view"]=o),n.ajax(ajaxurl,{method:"POST",success:s,error:u,dataType:"json",data:r}));var r})}(jQuery);
common/src/resources/js/app-shop.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){var i=0;jQuery("div.tribe-addon .caption").each(function(){var t=jQuery(this).height();i=t>i?t:i}),jQuery("div.tribe-addon:not(.first) .caption").css("height",i)});
1
+ jQuery(document).ready(function(){var t=0;jQuery("div.tribe-addon .caption").each(function(){var i=jQuery(this).height();t=t<i?i:t}),jQuery("div.tribe-addon:not(.first) .caption").css("height",t)});
common/src/resources/js/app/components.js CHANGED
@@ -1039,9 +1039,9 @@ module.exports = isObject;
1039
 
1040
  var global = __webpack_require__(8);
1041
  var core = __webpack_require__(9);
1042
- var ctx = __webpack_require__(40);
1043
- var hide = __webpack_require__(28);
1044
- var has = __webpack_require__(34);
1045
  var PROTOTYPE = 'prototype';
1046
 
1047
  var $export = function (type, name, source) {
@@ -1105,7 +1105,7 @@ module.exports = $export;
1105
  /* 19 */
1106
  /***/ (function(module, exports, __webpack_require__) {
1107
 
1108
- var Symbol = __webpack_require__(37),
1109
  getRawTag = __webpack_require__(221),
1110
  objectToString = __webpack_require__(222);
1111
 
@@ -1311,6 +1311,101 @@ exports.default = function (subClass, superClass) {
1311
 
1312
  /***/ }),
1313
  /* 28 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1314
  /***/ (function(module, exports, __webpack_require__) {
1315
 
1316
  var dP = __webpack_require__(21);
@@ -1324,12 +1419,12 @@ module.exports = __webpack_require__(22) ? function (object, key, value) {
1324
 
1325
 
1326
  /***/ }),
1327
- /* 29 */
1328
  /***/ (function(module, exports, __webpack_require__) {
1329
 
1330
  var arrayLikeKeys = __webpack_require__(157),
1331
  baseKeys = __webpack_require__(93),
1332
- isArrayLike = __webpack_require__(42);
1333
 
1334
  /**
1335
  * Creates an array of the own enumerable property names of `object`.
@@ -1367,14 +1462,14 @@ module.exports = keys;
1367
 
1368
 
1369
  /***/ }),
1370
- /* 30 */
1371
  /***/ (function(module, exports, __webpack_require__) {
1372
 
1373
  var baseKeys = __webpack_require__(93),
1374
- getTag = __webpack_require__(43),
1375
  isArguments = __webpack_require__(57),
1376
  isArray = __webpack_require__(5),
1377
- isArrayLike = __webpack_require__(42),
1378
  isBuffer = __webpack_require__(58),
1379
  isPrototype = __webpack_require__(62),
1380
  isTypedArray = __webpack_require__(85);
@@ -1450,7 +1545,7 @@ module.exports = isEmpty;
1450
 
1451
 
1452
  /***/ }),
1453
- /* 31 */
1454
  /***/ (function(module, exports, __webpack_require__) {
1455
 
1456
  "use strict";
@@ -1477,7 +1572,7 @@ exports.default = function (arr) {
1477
  };
1478
 
1479
  /***/ }),
1480
- /* 32 */
1481
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1482
 
1483
  "use strict";
@@ -1606,7 +1701,7 @@ var DEFAULT_STATE = {
1606
  }
1607
  });
1608
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js
1609
- var toConsumableArray = __webpack_require__(31);
1610
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
1611
 
1612
  // CONCATENATED MODULE: ./src/modules/data/forms/reducers/volatile.js
@@ -1671,18 +1766,18 @@ var reducer_byId = function byId() {
1671
  volatile: reducers_volatile
1672
  }));
1673
  // EXTERNAL MODULE: ./node_modules/lodash/get.js
1674
- var get = __webpack_require__(35);
1675
  var get_default = /*#__PURE__*/__webpack_require__.n(get);
1676
 
1677
  // EXTERNAL MODULE: ./node_modules/lodash/isEmpty.js
1678
- var isEmpty = __webpack_require__(30);
1679
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
1680
 
1681
  // EXTERNAL MODULE: ./src/modules/store/middlewares/request/index.js + 4 modules
1682
- var request = __webpack_require__(38);
1683
 
1684
  // EXTERNAL MODULE: ./node_modules/reselect/lib/index.js
1685
- var lib = __webpack_require__(39);
1686
 
1687
  // CONCATENATED MODULE: ./src/modules/data/forms/selectors.js
1688
  /**
@@ -1928,8 +2023,8 @@ var actions_maybeRemoveEntry = function maybeRemoveEntry(id) {
1928
 
1929
 
1930
  /***/ }),
1931
- /* 33 */,
1932
- /* 34 */
1933
  /***/ (function(module, exports) {
1934
 
1935
  var hasOwnProperty = {}.hasOwnProperty;
@@ -1938,124 +2033,8 @@ module.exports = function (it, key) {
1938
  };
1939
 
1940
 
1941
- /***/ }),
1942
- /* 35 */
1943
- /***/ (function(module, exports, __webpack_require__) {
1944
-
1945
- var baseGet = __webpack_require__(142);
1946
-
1947
- /**
1948
- * Gets the value at `path` of `object`. If the resolved value is
1949
- * `undefined`, the `defaultValue` is returned in its place.
1950
- *
1951
- * @static
1952
- * @memberOf _
1953
- * @since 3.7.0
1954
- * @category Object
1955
- * @param {Object} object The object to query.
1956
- * @param {Array|string} path The path of the property to get.
1957
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
1958
- * @returns {*} Returns the resolved value.
1959
- * @example
1960
- *
1961
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
1962
- *
1963
- * _.get(object, 'a[0].b.c');
1964
- * // => 3
1965
- *
1966
- * _.get(object, ['a', '0', 'b', 'c']);
1967
- * // => 3
1968
- *
1969
- * _.get(object, 'a.b.c', 'default');
1970
- * // => 'default'
1971
- */
1972
- function get(object, path, defaultValue) {
1973
- var result = object == null ? undefined : baseGet(object, path);
1974
- return result === undefined ? defaultValue : result;
1975
- }
1976
-
1977
- module.exports = get;
1978
-
1979
-
1980
  /***/ }),
1981
  /* 36 */
1982
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
1983
-
1984
- "use strict";
1985
- __webpack_require__.r(__webpack_exports__);
1986
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
1987
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "google", function() { return google; });
1988
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dateSettings", function() { return dateSettings; });
1989
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "editor", function() { return editor; });
1990
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "editorConstants", function() { return editorConstants; });
1991
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapsAPI", function() { return mapsAPI; });
1992
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "priceSettings", function() { return priceSettings; });
1993
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settings", function() { return settings; });
1994
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timezoneHtml", function() { return timezoneHtml; });
1995
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; });
1996
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "adminUrl", function() { return adminUrl; });
1997
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tickets", function() { return tickets; });
1998
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rest", function() { return rest; });
1999
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "restNonce", function() { return restNonce; });
2000
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "editorDefaults", function() { return editorDefaults; });
2001
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "list", function() { return list; });
2002
- /**
2003
- * @todo: handle globals in a better way
2004
- */
2005
- var get = function get(key, defaultValue) {
2006
- return window[key] || defaultValue;
2007
- };
2008
- var google = function google() {
2009
- return get('google');
2010
- };
2011
- var dateSettings = function dateSettings() {
2012
- return get('tribe_date_settings');
2013
- };
2014
- var editor = function editor() {
2015
- return get('tribe_blocks_editor');
2016
- };
2017
- var editorConstants = function editorConstants() {
2018
- return get('tribe_blocks_editor_constants');
2019
- };
2020
- var mapsAPI = function mapsAPI() {
2021
- return get('tribe_blocks_editor_google_maps_api');
2022
- };
2023
- var priceSettings = function priceSettings() {
2024
- return get('tribe_blocks_editor_price_settings');
2025
- };
2026
- var settings = function settings() {
2027
- return get('tribe_blocks_editor_settings');
2028
- };
2029
- var timezoneHtml = function timezoneHtml() {
2030
- return get('tribe_blocks_editor_timezone_html', '');
2031
- };
2032
- var config = function config() {
2033
- return get('tribe_js_config', {});
2034
- };
2035
- var adminUrl = function adminUrl() {
2036
- return config().admin_url || '';
2037
- };
2038
- var tickets = function tickets() {
2039
- return config().tickets || {};
2040
- };
2041
- var rest = function rest() {
2042
- return config().rest || {};
2043
- };
2044
- var restNonce = function restNonce() {
2045
- return rest().nonce || {};
2046
- };
2047
- var editorDefaults = function editorDefaults() {
2048
- return config().editor_defaults || {};
2049
- };
2050
- var list = function list() {
2051
- return {
2052
- countries: get('tribe_data_countries'),
2053
- us_states: get('tribe_data_us_states')
2054
- };
2055
- };
2056
-
2057
- /***/ }),
2058
- /* 37 */
2059
  /***/ (function(module, exports, __webpack_require__) {
2060
 
2061
  var root = __webpack_require__(10);
@@ -2067,7 +2046,7 @@ module.exports = Symbol;
2067
 
2068
 
2069
  /***/ }),
2070
- /* 38 */
2071
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2072
 
2073
  "use strict";
@@ -2115,7 +2094,7 @@ var isUndefined = __webpack_require__(120);
2115
  var isUndefined_default = /*#__PURE__*/__webpack_require__.n(isUndefined);
2116
 
2117
  // EXTERNAL MODULE: ./node_modules/lodash/isEmpty.js
2118
- var isEmpty = __webpack_require__(30);
2119
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
2120
 
2121
  // EXTERNAL MODULE: ./node_modules/querystringify/index.js
@@ -2173,7 +2152,7 @@ var inRange = __webpack_require__(201);
2173
  var inRange_default = /*#__PURE__*/__webpack_require__.n(inRange);
2174
 
2175
  // EXTERNAL MODULE: ./node_modules/lodash/get.js
2176
- var get = __webpack_require__(35);
2177
  var get_default = /*#__PURE__*/__webpack_require__.n(get);
2178
 
2179
  // EXTERNAL MODULE: ./node_modules/lodash/noop.js
@@ -2184,7 +2163,7 @@ var noop_default = /*#__PURE__*/__webpack_require__.n(noop);
2184
  var whatwg_fetch_fetch = __webpack_require__(205);
2185
 
2186
  // EXTERNAL MODULE: ./src/modules/utils/globals.js
2187
- var globals = __webpack_require__(36);
2188
 
2189
  // CONCATENATED MODULE: ./src/modules/store/middlewares/request/wp-request.js
2190
 
@@ -2210,7 +2189,7 @@ var _this = undefined;
2210
  return function (next) {
2211
  return function () {
2212
  var _ref = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(action) {
2213
- var _action$meta, meta, _meta$path, path, _meta$params, params, rest, _rest$url, url, _rest$nonce, nonce, wpRESTNonce, namespaces, core, BASE, actions, endpoint, headers, response, status, body;
2214
 
2215
  return regenerator_default.a.wrap(function _callee$(_context) {
2216
  while (1) {
@@ -2230,10 +2209,9 @@ var _this = undefined;
2230
 
2231
  next(action);
2232
 
2233
- rest = get_default()(Object(globals["config"])(), 'rest', {});
2234
- _rest$url = rest.url, url = _rest$url === undefined ? '' : _rest$url, _rest$nonce = rest.nonce, nonce = _rest$nonce === undefined ? {} : _rest$nonce;
2235
  wpRESTNonce = nonce.wp_rest || '';
2236
- namespaces = rest.namespaces || {};
2237
  core = namespaces.core || 'wp/v2';
2238
  BASE = '' + url + core;
2239
  actions = extends_default()({
@@ -2244,14 +2222,14 @@ var _this = undefined;
2244
  }, get_default()(meta, 'actions', {}));
2245
 
2246
  if (!(path === '')) {
2247
- _context.next = 15;
2248
  break;
2249
  }
2250
 
2251
  actions.none(path);
2252
  return _context.abrupt('return');
2253
 
2254
- case 15:
2255
  endpoint = BASE + '/' + path;
2256
 
2257
 
@@ -2263,48 +2241,48 @@ var _this = undefined;
2263
  }, get_default()(params, 'headers', {}), {
2264
  'X-WP-Nonce': wpRESTNonce
2265
  });
2266
- _context.prev = 18;
2267
- _context.next = 21;
2268
  return fetch(endpoint, extends_default()({}, params, {
2269
  credentials: 'include',
2270
  headers: headers
2271
  }));
2272
 
2273
- case 21:
2274
  response = _context.sent;
2275
  status = response.status;
2276
  // inRange includes 200 but excludes 300 from the range so it's from 200 up to 299
2277
 
2278
  if (inRange_default()(status, 200, 300)) {
2279
- _context.next = 25;
2280
  break;
2281
  }
2282
 
2283
  throw response;
2284
 
2285
- case 25:
2286
- _context.next = 27;
2287
  return response.json();
2288
 
2289
- case 27:
2290
  body = _context.sent;
2291
 
2292
  actions.success({ body: body, headers: response.headers });
2293
  return _context.abrupt('return', [response, body]);
2294
 
2295
- case 32:
2296
- _context.prev = 32;
2297
- _context.t0 = _context['catch'](18);
2298
 
2299
  actions.error(_context.t0);
2300
  return _context.abrupt('return', _context.t0);
2301
 
2302
- case 36:
2303
  case 'end':
2304
  return _context.stop();
2305
  }
2306
  }
2307
- }, _callee, _this, [[18, 32]]);
2308
  }));
2309
 
2310
  return function (_x) {
@@ -2329,7 +2307,7 @@ var _this = undefined;
2329
 
2330
 
2331
  /***/ }),
2332
- /* 39 */
2333
  /***/ (function(module, exports, __webpack_require__) {
2334
 
2335
  "use strict";
@@ -2460,7 +2438,7 @@ function createStructuredSelector(selectors) {
2460
  }
2461
 
2462
  /***/ }),
2463
- /* 40 */
2464
  /***/ (function(module, exports, __webpack_require__) {
2465
 
2466
  // optional / simple context binding
@@ -2486,14 +2464,14 @@ module.exports = function (fn, that, length) {
2486
 
2487
 
2488
  /***/ }),
2489
- /* 41 */
2490
  /***/ (function(module, exports) {
2491
 
2492
  module.exports = {};
2493
 
2494
 
2495
  /***/ }),
2496
- /* 42 */
2497
  /***/ (function(module, exports, __webpack_require__) {
2498
 
2499
  var isFunction = __webpack_require__(92),
@@ -2532,7 +2510,7 @@ module.exports = isArrayLike;
2532
 
2533
 
2534
  /***/ }),
2535
- /* 43 */
2536
  /***/ (function(module, exports, __webpack_require__) {
2537
 
2538
  var DataView = __webpack_require__(255),
@@ -2595,6 +2573,45 @@ if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2595
  module.exports = getTag;
2596
 
2597
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2598
  /***/ }),
2599
  /* 44 */
2600
  /***/ (function(module, exports, __webpack_require__) {
@@ -2969,7 +2986,7 @@ __webpack_require__.d(proptypes_namespaceObject, "ReactSelectOption", function()
2969
  __webpack_require__.d(proptypes_namespaceObject, "ReactSelectOptions", function() { return ReactSelectOptions; });
2970
 
2971
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js
2972
- var toConsumableArray = __webpack_require__(31);
2973
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
2974
 
2975
  // EXTERNAL MODULE: ./node_modules/lodash/uniq.js
@@ -3130,7 +3147,7 @@ __webpack_require__(130)(String, 'String', function (iterated) {
3130
  /***/ (function(module, exports, __webpack_require__) {
3131
 
3132
  var def = __webpack_require__(21).f;
3133
- var has = __webpack_require__(34);
3134
  var TAG = __webpack_require__(11)('toStringTag');
3135
 
3136
  module.exports = function (it, tag, stat) {
@@ -3423,28 +3440,28 @@ module.exports = copyObject;
3423
  /* 73 */
3424
  /***/ (function(module, exports) {
3425
 
3426
- module.exports = function(module) {
3427
- if (!module.webpackPolyfill) {
3428
- module.deprecate = function() {};
3429
- module.paths = [];
3430
- // module.parent = undefined by default
3431
- if (!module.children) module.children = [];
3432
- Object.defineProperty(module, "loaded", {
3433
- enumerable: true,
3434
- get: function() {
3435
- return module.l;
3436
- }
3437
- });
3438
- Object.defineProperty(module, "id", {
3439
- enumerable: true,
3440
- get: function() {
3441
- return module.i;
3442
- }
3443
- });
3444
- module.webpackPolyfill = 1;
3445
- }
3446
- return module;
3447
- };
3448
 
3449
 
3450
  /***/ }),
@@ -4600,8 +4617,8 @@ module.exports = baseIteratee;
4600
 
4601
  __webpack_require__(285);
4602
  var global = __webpack_require__(8);
4603
- var hide = __webpack_require__(28);
4604
- var Iterators = __webpack_require__(41);
4605
  var TO_STRING_TAG = __webpack_require__(11)('toStringTag');
4606
 
4607
  var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
@@ -4625,7 +4642,7 @@ for (var i = 0; i < DOMIterables.length; i++) {
4625
 
4626
  var classof = __webpack_require__(109);
4627
  var ITERATOR = __webpack_require__(11)('iterator');
4628
- var Iterators = __webpack_require__(41);
4629
  module.exports = __webpack_require__(9).getIteratorMethod = function (it) {
4630
  if (it != undefined) return it[ITERATOR]
4631
  || it['@@iterator']
@@ -5262,7 +5279,7 @@ g = (function() {
5262
 
5263
  try {
5264
  // This works if eval is allowed (see CSP)
5265
- g = g || Function("return this")() || (1, eval)("this");
5266
  } catch (e) {
5267
  // This works if the window reference is available
5268
  if (typeof window === "object") g = window;
@@ -5327,7 +5344,7 @@ module.exports = Object.create || function create(O, Properties) {
5327
  /***/ (function(module, exports, __webpack_require__) {
5328
 
5329
  var baseIndexOf = __webpack_require__(112),
5330
- isArrayLike = __webpack_require__(42),
5331
  isString = __webpack_require__(97),
5332
  toInteger = __webpack_require__(84),
5333
  values = __webpack_require__(363);
@@ -5638,8 +5655,8 @@ module.exports = wp.components;
5638
  var LIBRARY = __webpack_require__(48);
5639
  var $export = __webpack_require__(18);
5640
  var redefine = __webpack_require__(165);
5641
- var hide = __webpack_require__(28);
5642
- var Iterators = __webpack_require__(41);
5643
  var $iterCreate = __webpack_require__(210);
5644
  var setToStringTag = __webpack_require__(61);
5645
  var getPrototypeOf = __webpack_require__(214);
@@ -5748,7 +5765,7 @@ module.exports = function (iterator, fn, value, entries) {
5748
  /***/ (function(module, exports, __webpack_require__) {
5749
 
5750
  // check on default Array iterator
5751
- var Iterators = __webpack_require__(41);
5752
  var ITERATOR = __webpack_require__(11)('iterator');
5753
  var ArrayProto = Array.prototype;
5754
 
@@ -6074,7 +6091,7 @@ module.exports = function (O, D) {
6074
  /* 145 */
6075
  /***/ (function(module, exports, __webpack_require__) {
6076
 
6077
- var ctx = __webpack_require__(40);
6078
  var invoke = __webpack_require__(291);
6079
  var html = __webpack_require__(132);
6080
  var cel = __webpack_require__(78);
@@ -6202,7 +6219,7 @@ __webpack_require__.r(__webpack_exports__);
6202
  var post_types = __webpack_require__(75);
6203
 
6204
  // EXTERNAL MODULE: ./src/modules/data/forms/index.js + 7 modules
6205
- var data_forms = __webpack_require__(32);
6206
 
6207
  // EXTERNAL MODULE: ./src/modules/data/plugins/index.js + 6 modules
6208
  var plugins = __webpack_require__(59);
@@ -6589,7 +6606,7 @@ module.exports = stubArray;
6589
 
6590
  var baseGetAllKeys = __webpack_require__(161),
6591
  getSymbols = __webpack_require__(105),
6592
- keys = __webpack_require__(29);
6593
 
6594
  /**
6595
  * Creates an array of own enumerable property names and symbols of `object`.
@@ -6689,14 +6706,14 @@ module.exports = !__webpack_require__(22) && !__webpack_require__(49)(function (
6689
  /* 165 */
6690
  /***/ (function(module, exports, __webpack_require__) {
6691
 
6692
- module.exports = __webpack_require__(28);
6693
 
6694
 
6695
  /***/ }),
6696
  /* 166 */
6697
  /***/ (function(module, exports, __webpack_require__) {
6698
 
6699
- var has = __webpack_require__(34);
6700
  var toIObject = __webpack_require__(44);
6701
  var arrayIndexOf = __webpack_require__(212)(false);
6702
  var IE_PROTO = __webpack_require__(80)('IE_PROTO');
@@ -6719,7 +6736,7 @@ module.exports = function (object, names) {
6719
  /* 167 */
6720
  /***/ (function(module, exports, __webpack_require__) {
6721
 
6722
- var Symbol = __webpack_require__(37),
6723
  arrayMap = __webpack_require__(74),
6724
  isArray = __webpack_require__(5),
6725
  isSymbol = __webpack_require__(45);
@@ -7307,7 +7324,7 @@ module.exports = defineProperty;
7307
  /***/ (function(module, exports, __webpack_require__) {
7308
 
7309
  var copyObject = __webpack_require__(72),
7310
- keys = __webpack_require__(29);
7311
 
7312
  /**
7313
  * The base implementation of `_.assign` without support for multiple sources
@@ -7405,7 +7422,7 @@ var Stack = __webpack_require__(94),
7405
  copySymbolsIn = __webpack_require__(343),
7406
  getAllKeys = __webpack_require__(160),
7407
  getAllKeysIn = __webpack_require__(344),
7408
- getTag = __webpack_require__(43),
7409
  initCloneArray = __webpack_require__(345),
7410
  initCloneByTag = __webpack_require__(346),
7411
  initCloneObject = __webpack_require__(351),
@@ -7414,7 +7431,7 @@ var Stack = __webpack_require__(94),
7414
  isMap = __webpack_require__(352),
7415
  isObject = __webpack_require__(17),
7416
  isSet = __webpack_require__(354),
7417
- keys = __webpack_require__(29);
7418
 
7419
  /** Used to compose bitmasks for cloning. */
7420
  var CLONE_DEEP_FLAG = 1,
@@ -7573,7 +7590,7 @@ module.exports = baseClone;
7573
 
7574
  var arrayLikeKeys = __webpack_require__(157),
7575
  baseKeysIn = __webpack_require__(339),
7576
- isArrayLike = __webpack_require__(42);
7577
 
7578
  /**
7579
  * Creates an array of the own and inherited enumerable property names of `object`.
@@ -9500,7 +9517,7 @@ var setToStringTag = __webpack_require__(61);
9500
  var IteratorPrototype = {};
9501
 
9502
  // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
9503
- __webpack_require__(28)(IteratorPrototype, __webpack_require__(11)('iterator'), function () { return this; });
9504
 
9505
  module.exports = function (Constructor, NAME, next) {
9506
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
@@ -9574,7 +9591,7 @@ module.exports = function (index, length) {
9574
  /***/ (function(module, exports, __webpack_require__) {
9575
 
9576
  // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
9577
- var has = __webpack_require__(34);
9578
  var toObject = __webpack_require__(81);
9579
  var IE_PROTO = __webpack_require__(80)('IE_PROTO');
9580
  var ObjectProto = Object.prototype;
@@ -9594,7 +9611,7 @@ module.exports = Object.getPrototypeOf || function (O) {
9594
 
9595
  "use strict";
9596
 
9597
- var ctx = __webpack_require__(40);
9598
  var $export = __webpack_require__(18);
9599
  var toObject = __webpack_require__(81);
9600
  var call = __webpack_require__(133);
@@ -9790,7 +9807,7 @@ module.exports = baseIsNative;
9790
  /* 221 */
9791
  /***/ (function(module, exports, __webpack_require__) {
9792
 
9793
- var Symbol = __webpack_require__(37);
9794
 
9795
  /** Used for built-in method references. */
9796
  var objectProto = Object.prototype;
@@ -10826,7 +10843,7 @@ var Stack = __webpack_require__(94),
10826
  equalArrays = __webpack_require__(139),
10827
  equalByTag = __webpack_require__(261),
10828
  equalObjects = __webpack_require__(263),
10829
- getTag = __webpack_require__(43),
10830
  isArray = __webpack_require__(5),
10831
  isBuffer = __webpack_require__(58),
10832
  isTypedArray = __webpack_require__(85);
@@ -10940,7 +10957,7 @@ module.exports = arraySome;
10940
  /* 261 */
10941
  /***/ (function(module, exports, __webpack_require__) {
10942
 
10943
- var Symbol = __webpack_require__(37),
10944
  Uint8Array = __webpack_require__(162),
10945
  eq = __webpack_require__(67),
10946
  equalArrays = __webpack_require__(139),
@@ -11178,7 +11195,7 @@ module.exports = equalObjects;
11178
  /***/ (function(module, exports, __webpack_require__) {
11179
 
11180
  var isStrictComparable = __webpack_require__(140),
11181
- keys = __webpack_require__(29);
11182
 
11183
  /**
11184
  * Gets the property names, values, and compare flags of `object`.
@@ -11208,7 +11225,7 @@ module.exports = getMatchData;
11208
  /***/ (function(module, exports, __webpack_require__) {
11209
 
11210
  var baseIsEqual = __webpack_require__(138),
11211
- get = __webpack_require__(35),
11212
  hasIn = __webpack_require__(268),
11213
  isKey = __webpack_require__(89),
11214
  isStrictComparable = __webpack_require__(140),
@@ -11585,7 +11602,7 @@ module.exports = baseFlatten;
11585
  /* 275 */
11586
  /***/ (function(module, exports, __webpack_require__) {
11587
 
11588
- var Symbol = __webpack_require__(37),
11589
  isArguments = __webpack_require__(57),
11590
  isArray = __webpack_require__(5);
11591
 
@@ -12515,7 +12532,7 @@ module.exports = __webpack_require__(9).Promise;
12515
 
12516
  var addToUnscopables = __webpack_require__(286);
12517
  var step = __webpack_require__(287);
12518
- var Iterators = __webpack_require__(41);
12519
  var toIObject = __webpack_require__(44);
12520
 
12521
  // 22.1.3.4 Array.prototype.entries()
@@ -12572,7 +12589,7 @@ module.exports = function (done, value) {
12572
 
12573
  var LIBRARY = __webpack_require__(48);
12574
  var global = __webpack_require__(8);
12575
- var ctx = __webpack_require__(40);
12576
  var classof = __webpack_require__(109);
12577
  var $export = __webpack_require__(18);
12578
  var isObject = __webpack_require__(23);
@@ -12872,7 +12889,7 @@ module.exports = function (it, Constructor, name, forbiddenField) {
12872
  /* 290 */
12873
  /***/ (function(module, exports, __webpack_require__) {
12874
 
12875
- var ctx = __webpack_require__(40);
12876
  var call = __webpack_require__(133);
12877
  var isArrayIter = __webpack_require__(134);
12878
  var anObject = __webpack_require__(16);
@@ -13010,7 +13027,7 @@ module.exports = navigator && navigator.userAgent || '';
13010
  /* 294 */
13011
  /***/ (function(module, exports, __webpack_require__) {
13012
 
13013
- var hide = __webpack_require__(28);
13014
  module.exports = function (target, src, safe) {
13015
  for (var key in src) {
13016
  if (safe && target[key]) target[key] = src[key];
@@ -13187,7 +13204,7 @@ var pIE = __webpack_require__(90);
13187
  var createDesc = __webpack_require__(50);
13188
  var toIObject = __webpack_require__(44);
13189
  var toPrimitive = __webpack_require__(111);
13190
- var has = __webpack_require__(34);
13191
  var IE8_DOM_DEFINE = __webpack_require__(164);
13192
  var gOPD = Object.getOwnPropertyDescriptor;
13193
 
@@ -15271,7 +15288,7 @@ function io_helpers_throttle(ms, pattern, worker) {
15271
  var modules_data = __webpack_require__(148);
15272
 
15273
  // EXTERNAL MODULE: ./src/modules/store/middlewares/request/index.js + 4 modules
15274
- var request = __webpack_require__(38);
15275
 
15276
  // CONCATENATED MODULE: ./src/modules/store/middlewares/index.js
15277
 
@@ -17831,7 +17848,7 @@ module.exports = cloneRegExp;
17831
  /* 349 */
17832
  /***/ (function(module, exports, __webpack_require__) {
17833
 
17834
- var Symbol = __webpack_require__(37);
17835
 
17836
  /** Used to convert symbols to primitives and strings. */
17837
  var symbolProto = Symbol ? Symbol.prototype : undefined,
@@ -17934,7 +17951,7 @@ module.exports = isMap;
17934
  /* 353 */
17935
  /***/ (function(module, exports, __webpack_require__) {
17936
 
17937
- var getTag = __webpack_require__(43),
17938
  isObjectLike = __webpack_require__(13);
17939
 
17940
  /** `Object#toString` result references. */
@@ -17991,7 +18008,7 @@ module.exports = isSet;
17991
  /* 355 */
17992
  /***/ (function(module, exports, __webpack_require__) {
17993
 
17994
- var getTag = __webpack_require__(43),
17995
  isObjectLike = __webpack_require__(13);
17996
 
17997
  /** `Object#toString` result references. */
@@ -18125,7 +18142,7 @@ module.exports = isPlainObject;
18125
  /* 358 */
18126
  /***/ (function(module, exports, __webpack_require__) {
18127
 
18128
- var getTag = __webpack_require__(43),
18129
  isObjectLike = __webpack_require__(13);
18130
 
18131
  /** `Object#toString` result references. */
@@ -18319,7 +18336,7 @@ module.exports = toPath;
18319
  /***/ (function(module, exports, __webpack_require__) {
18320
 
18321
  var baseValues = __webpack_require__(364),
18322
- keys = __webpack_require__(29);
18323
 
18324
  /**
18325
  * Creates an array of the own enumerable string keyed property values of `object`.
@@ -19285,7 +19302,7 @@ module.exports = __webpack_require__(9).Symbol;
19285
 
19286
  // ECMAScript 6 symbols shim
19287
  var global = __webpack_require__(8);
19288
- var has = __webpack_require__(34);
19289
  var DESCRIPTORS = __webpack_require__(22);
19290
  var $export = __webpack_require__(18);
19291
  var redefine = __webpack_require__(165);
@@ -19509,7 +19526,7 @@ $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
19509
  });
19510
 
19511
  // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
19512
- $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(28)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
19513
  // 19.4.3.5 Symbol.prototype[@@toStringTag]
19514
  setToStringTag($Symbol, 'Symbol');
19515
  // 20.2.1.9 Math[@@toStringTag]
@@ -19524,7 +19541,7 @@ setToStringTag(global.JSON, 'JSON', true);
19524
 
19525
  var META = __webpack_require__(66)('meta');
19526
  var isObject = __webpack_require__(23);
19527
- var has = __webpack_require__(34);
19528
  var setDesc = __webpack_require__(21).f;
19529
  var id = 0;
19530
  var isExtensible = Object.isExtensible || function () {
@@ -19737,7 +19754,7 @@ var inherits = __webpack_require__(27);
19737
  var inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);
19738
 
19739
  // EXTERNAL MODULE: ./node_modules/lodash/keys.js
19740
- var keys = __webpack_require__(29);
19741
  var keys_default = /*#__PURE__*/__webpack_require__.n(keys);
19742
 
19743
  // EXTERNAL MODULE: ./node_modules/lodash/isObject.js
@@ -19749,7 +19766,7 @@ var isArray = __webpack_require__(5);
19749
  var isArray_default = /*#__PURE__*/__webpack_require__.n(isArray);
19750
 
19751
  // EXTERNAL MODULE: ./node_modules/lodash/isEmpty.js
19752
- var isEmpty = __webpack_require__(30);
19753
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
19754
 
19755
  // EXTERNAL MODULE: ./node_modules/lodash/noop.js
@@ -19966,7 +19983,7 @@ var redux = __webpack_require__(14);
19966
  var es = __webpack_require__(206);
19967
 
19968
  // EXTERNAL MODULE: ./src/modules/data/forms/index.js + 7 modules
19969
- var data_forms = __webpack_require__(32);
19970
 
19971
  // CONCATENATED MODULE: ./src/modules/hoc/with-form.js
19972
 
@@ -20255,7 +20272,7 @@ module.exports = {
20255
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
20256
  function (test, buggy, set) {
20257
  try {
20258
- set = __webpack_require__(40)(Function.call, __webpack_require__(304).f(Object.prototype, '__proto__').set, 2);
20259
  set(test, []);
20260
  buggy = !(test instanceof Array);
20261
  } catch (e) { buggy = true; }
@@ -20403,7 +20420,7 @@ module.exports = __webpack_require__(406);
20403
 
20404
  var classof = __webpack_require__(109);
20405
  var ITERATOR = __webpack_require__(11)('iterator');
20406
- var Iterators = __webpack_require__(41);
20407
  module.exports = __webpack_require__(9).isIterable = function (it) {
20408
  var O = Object(it);
20409
  return O[ITERATOR] !== undefined
@@ -20446,7 +20463,7 @@ module.exports = __webpack_require__(9).getIterator = function (it) {
20446
  /***/ (function(module, exports, __webpack_require__) {
20447
 
20448
  var baseFor = __webpack_require__(411),
20449
- keys = __webpack_require__(29);
20450
 
20451
  /**
20452
  * The base implementation of `_.forOwn` without support for iteratee shorthands.
@@ -20520,7 +20537,7 @@ module.exports = createBaseFor;
20520
  /* 413 */
20521
  /***/ (function(module, exports, __webpack_require__) {
20522
 
20523
- var isArrayLike = __webpack_require__(42);
20524
 
20525
  /**
20526
  * Creates a `baseEach` or `baseEachRight` function.
@@ -20559,7 +20576,7 @@ module.exports = createBaseEach;
20559
  /***/ (function(module, exports, __webpack_require__) {
20560
 
20561
  var baseEach = __webpack_require__(385),
20562
- isArrayLike = __webpack_require__(42);
20563
 
20564
  /**
20565
  * The base implementation of `_.map` without support for iteratee shorthands.
@@ -20587,8 +20604,8 @@ module.exports = baseMap;
20587
  /***/ (function(module, exports, __webpack_require__) {
20588
 
20589
  var baseIteratee = __webpack_require__(106),
20590
- isArrayLike = __webpack_require__(42),
20591
- keys = __webpack_require__(29);
20592
 
20593
  /**
20594
  * Creates a `_.find` or `_.findLast` function.
@@ -20939,7 +20956,7 @@ var plugins = __webpack_require__(59);
20939
  var hoc = __webpack_require__(390);
20940
 
20941
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js
20942
- var toConsumableArray = __webpack_require__(31);
20943
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
20944
 
20945
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/slicedToArray.js
@@ -21074,6 +21091,7 @@ var component_PluginBlockHooks = function (_PureComponent) {
21074
  allowedBlocks: this.props.allowedBlocks,
21075
  layouts: this.props.layouts,
21076
  template: this.template,
 
21077
  templateLock: this.props.templateLock
21078
  })
21079
  );
@@ -21156,7 +21174,11 @@ component_PluginBlockHooks.propTypes = {
21156
  * ```
21157
  */
21158
  pluginTemplates: prop_types_default.a.objectOf(prop_types_default.a.arrayOf(prop_types_default.a.array)),
21159
- templateLock: prop_types_default.a.oneOf(['all', 'insert', false]) };
 
 
 
 
21160
  /* harmony default export */ var component = (component_PluginBlockHooks);
21161
  // CONCATENATED MODULE: ./src/modules/components/plugin-block-hooks/container.js
21162
  /**
1039
 
1040
  var global = __webpack_require__(8);
1041
  var core = __webpack_require__(9);
1042
+ var ctx = __webpack_require__(39);
1043
+ var hide = __webpack_require__(29);
1044
+ var has = __webpack_require__(35);
1045
  var PROTOTYPE = 'prototype';
1046
 
1047
  var $export = function (type, name, source) {
1105
  /* 19 */
1106
  /***/ (function(module, exports, __webpack_require__) {
1107
 
1108
+ var Symbol = __webpack_require__(36),
1109
  getRawTag = __webpack_require__(221),
1110
  objectToString = __webpack_require__(222);
1111
 
1311
 
1312
  /***/ }),
1313
  /* 28 */
1314
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1315
+
1316
+ "use strict";
1317
+ __webpack_require__.r(__webpack_exports__);
1318
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
1319
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "google", function() { return google; });
1320
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; });
1321
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "common", function() { return common; });
1322
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "adminUrl", function() { return adminUrl; });
1323
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rest", function() { return rest; });
1324
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "restNonce", function() { return restNonce; });
1325
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dateSettings", function() { return dateSettings; });
1326
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "editorConstants", function() { return editorConstants; });
1327
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "list", function() { return list; });
1328
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tec", function() { return tec; });
1329
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "editor", function() { return editor; });
1330
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settings", function() { return settings; });
1331
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapsAPI", function() { return mapsAPI; });
1332
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "priceSettings", function() { return priceSettings; });
1333
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timezoneHtml", function() { return timezoneHtml; });
1334
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pro", function() { return pro; });
1335
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "editorDefaults", function() { return editorDefaults; });
1336
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tickets", function() { return tickets; });
1337
+ /**
1338
+ * @todo: handle globals in a better way
1339
+ */
1340
+ var get = function get(key, defaultValue) {
1341
+ return window[key] || defaultValue;
1342
+ };
1343
+ var google = function google() {
1344
+ return get('google');
1345
+ };
1346
+ // Localized Config
1347
+ var config = function config() {
1348
+ return get('tribe_editor_config', {});
1349
+ };
1350
+ // Common
1351
+ var common = function common() {
1352
+ return config().common || {};
1353
+ };
1354
+ var adminUrl = function adminUrl() {
1355
+ return common().adminUrl || '';
1356
+ };
1357
+ var rest = function rest() {
1358
+ return common().rest || {};
1359
+ };
1360
+ var restNonce = function restNonce() {
1361
+ return rest().nonce || {};
1362
+ };
1363
+ var dateSettings = function dateSettings() {
1364
+ return common().dateSettings || {};
1365
+ };
1366
+ var editorConstants = function editorConstants() {
1367
+ return common().constants || {};
1368
+ };
1369
+ var list = function list() {
1370
+ return {
1371
+ countries: common().countries || {},
1372
+ us_states: common().usStates || {}
1373
+ };
1374
+ };
1375
+
1376
+ // TEC
1377
+ var tec = function tec() {
1378
+ return config().events || {};
1379
+ };
1380
+ var editor = function editor() {
1381
+ return tec().editor || {};
1382
+ };
1383
+ var settings = function settings() {
1384
+ return tec().settings || {};
1385
+ };
1386
+ var mapsAPI = function mapsAPI() {
1387
+ return tec().googleMap || {};
1388
+ };
1389
+ var priceSettings = function priceSettings() {
1390
+ return tec().priceSettings || {};
1391
+ };
1392
+ var timezoneHtml = function timezoneHtml() {
1393
+ return tec().timezoneHTML || '';
1394
+ };
1395
+ // PRO
1396
+ var pro = function pro() {
1397
+ return config().eventsPRO || {};
1398
+ };
1399
+ var editorDefaults = function editorDefaults() {
1400
+ return pro().defaults || {};
1401
+ };
1402
+ // Tickets
1403
+ var tickets = function tickets() {
1404
+ return config().tickets || {};
1405
+ };
1406
+
1407
+ /***/ }),
1408
+ /* 29 */
1409
  /***/ (function(module, exports, __webpack_require__) {
1410
 
1411
  var dP = __webpack_require__(21);
1419
 
1420
 
1421
  /***/ }),
1422
+ /* 30 */
1423
  /***/ (function(module, exports, __webpack_require__) {
1424
 
1425
  var arrayLikeKeys = __webpack_require__(157),
1426
  baseKeys = __webpack_require__(93),
1427
+ isArrayLike = __webpack_require__(41);
1428
 
1429
  /**
1430
  * Creates an array of the own enumerable property names of `object`.
1462
 
1463
 
1464
  /***/ }),
1465
+ /* 31 */
1466
  /***/ (function(module, exports, __webpack_require__) {
1467
 
1468
  var baseKeys = __webpack_require__(93),
1469
+ getTag = __webpack_require__(42),
1470
  isArguments = __webpack_require__(57),
1471
  isArray = __webpack_require__(5),
1472
+ isArrayLike = __webpack_require__(41),
1473
  isBuffer = __webpack_require__(58),
1474
  isPrototype = __webpack_require__(62),
1475
  isTypedArray = __webpack_require__(85);
1545
 
1546
 
1547
  /***/ }),
1548
+ /* 32 */
1549
  /***/ (function(module, exports, __webpack_require__) {
1550
 
1551
  "use strict";
1572
  };
1573
 
1574
  /***/ }),
1575
+ /* 33 */
1576
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1577
 
1578
  "use strict";
1701
  }
1702
  });
1703
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js
1704
+ var toConsumableArray = __webpack_require__(32);
1705
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
1706
 
1707
  // CONCATENATED MODULE: ./src/modules/data/forms/reducers/volatile.js
1766
  volatile: reducers_volatile
1767
  }));
1768
  // EXTERNAL MODULE: ./node_modules/lodash/get.js
1769
+ var get = __webpack_require__(43);
1770
  var get_default = /*#__PURE__*/__webpack_require__.n(get);
1771
 
1772
  // EXTERNAL MODULE: ./node_modules/lodash/isEmpty.js
1773
+ var isEmpty = __webpack_require__(31);
1774
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
1775
 
1776
  // EXTERNAL MODULE: ./src/modules/store/middlewares/request/index.js + 4 modules
1777
+ var request = __webpack_require__(37);
1778
 
1779
  // EXTERNAL MODULE: ./node_modules/reselect/lib/index.js
1780
+ var lib = __webpack_require__(38);
1781
 
1782
  // CONCATENATED MODULE: ./src/modules/data/forms/selectors.js
1783
  /**
2023
 
2024
 
2025
  /***/ }),
2026
+ /* 34 */,
2027
+ /* 35 */
2028
  /***/ (function(module, exports) {
2029
 
2030
  var hasOwnProperty = {}.hasOwnProperty;
2033
  };
2034
 
2035
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2036
  /***/ }),
2037
  /* 36 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2038
  /***/ (function(module, exports, __webpack_require__) {
2039
 
2040
  var root = __webpack_require__(10);
2046
 
2047
 
2048
  /***/ }),
2049
+ /* 37 */
2050
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2051
 
2052
  "use strict";
2094
  var isUndefined_default = /*#__PURE__*/__webpack_require__.n(isUndefined);
2095
 
2096
  // EXTERNAL MODULE: ./node_modules/lodash/isEmpty.js
2097
+ var isEmpty = __webpack_require__(31);
2098
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
2099
 
2100
  // EXTERNAL MODULE: ./node_modules/querystringify/index.js
2152
  var inRange_default = /*#__PURE__*/__webpack_require__.n(inRange);
2153
 
2154
  // EXTERNAL MODULE: ./node_modules/lodash/get.js
2155
+ var get = __webpack_require__(43);
2156
  var get_default = /*#__PURE__*/__webpack_require__.n(get);
2157
 
2158
  // EXTERNAL MODULE: ./node_modules/lodash/noop.js
2163
  var whatwg_fetch_fetch = __webpack_require__(205);
2164
 
2165
  // EXTERNAL MODULE: ./src/modules/utils/globals.js
2166
+ var globals = __webpack_require__(28);
2167
 
2168
  // CONCATENATED MODULE: ./src/modules/store/middlewares/request/wp-request.js
2169
 
2189
  return function (next) {
2190
  return function () {
2191
  var _ref = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(action) {
2192
+ var _action$meta, meta, _meta$path, path, _meta$params, params, _rest, _rest$url, url, _rest$nonce, nonce, wpRESTNonce, namespaces, core, BASE, actions, endpoint, headers, response, status, body;
2193
 
2194
  return regenerator_default.a.wrap(function _callee$(_context) {
2195
  while (1) {
2209
 
2210
  next(action);
2211
 
2212
+ _rest = Object(globals["rest"])(), _rest$url = _rest.url, url = _rest$url === undefined ? '' : _rest$url, _rest$nonce = _rest.nonce, nonce = _rest$nonce === undefined ? {} : _rest$nonce;
 
2213
  wpRESTNonce = nonce.wp_rest || '';
2214
+ namespaces = globals["rest"].namespaces || {};
2215
  core = namespaces.core || 'wp/v2';
2216
  BASE = '' + url + core;
2217
  actions = extends_default()({
2222
  }, get_default()(meta, 'actions', {}));
2223
 
2224
  if (!(path === '')) {
2225
+ _context.next = 14;
2226
  break;
2227
  }
2228
 
2229
  actions.none(path);
2230
  return _context.abrupt('return');
2231
 
2232
+ case 14:
2233
  endpoint = BASE + '/' + path;
2234
 
2235
 
2241
  }, get_default()(params, 'headers', {}), {
2242
  'X-WP-Nonce': wpRESTNonce
2243
  });
2244
+ _context.prev = 17;
2245
+ _context.next = 20;
2246
  return fetch(endpoint, extends_default()({}, params, {
2247
  credentials: 'include',
2248
  headers: headers
2249
  }));
2250
 
2251
+ case 20:
2252
  response = _context.sent;
2253
  status = response.status;
2254
  // inRange includes 200 but excludes 300 from the range so it's from 200 up to 299
2255
 
2256
  if (inRange_default()(status, 200, 300)) {
2257
+ _context.next = 24;
2258
  break;
2259
  }
2260
 
2261
  throw response;
2262
 
2263
+ case 24:
2264
+ _context.next = 26;
2265
  return response.json();
2266
 
2267
+ case 26:
2268
  body = _context.sent;
2269
 
2270
  actions.success({ body: body, headers: response.headers });
2271
  return _context.abrupt('return', [response, body]);
2272
 
2273
+ case 31:
2274
+ _context.prev = 31;
2275
+ _context.t0 = _context['catch'](17);
2276
 
2277
  actions.error(_context.t0);
2278
  return _context.abrupt('return', _context.t0);
2279
 
2280
+ case 35:
2281
  case 'end':
2282
  return _context.stop();
2283
  }
2284
  }
2285
+ }, _callee, _this, [[17, 31]]);
2286
  }));
2287
 
2288
  return function (_x) {
2307
 
2308
 
2309
  /***/ }),
2310
+ /* 38 */
2311
  /***/ (function(module, exports, __webpack_require__) {
2312
 
2313
  "use strict";
2438
  }
2439
 
2440
  /***/ }),
2441
+ /* 39 */
2442
  /***/ (function(module, exports, __webpack_require__) {
2443
 
2444
  // optional / simple context binding
2464
 
2465
 
2466
  /***/ }),
2467
+ /* 40 */
2468
  /***/ (function(module, exports) {
2469
 
2470
  module.exports = {};
2471
 
2472
 
2473
  /***/ }),
2474
+ /* 41 */
2475
  /***/ (function(module, exports, __webpack_require__) {
2476
 
2477
  var isFunction = __webpack_require__(92),
2510
 
2511
 
2512
  /***/ }),
2513
+ /* 42 */
2514
  /***/ (function(module, exports, __webpack_require__) {
2515
 
2516
  var DataView = __webpack_require__(255),
2573
  module.exports = getTag;
2574
 
2575
 
2576
+ /***/ }),
2577
+ /* 43 */
2578
+ /***/ (function(module, exports, __webpack_require__) {
2579
+
2580
+ var baseGet = __webpack_require__(142);
2581
+
2582
+ /**
2583
+ * Gets the value at `path` of `object`. If the resolved value is
2584
+ * `undefined`, the `defaultValue` is returned in its place.
2585
+ *
2586
+ * @static
2587
+ * @memberOf _
2588
+ * @since 3.7.0
2589
+ * @category Object
2590
+ * @param {Object} object The object to query.
2591
+ * @param {Array|string} path The path of the property to get.
2592
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
2593
+ * @returns {*} Returns the resolved value.
2594
+ * @example
2595
+ *
2596
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
2597
+ *
2598
+ * _.get(object, 'a[0].b.c');
2599
+ * // => 3
2600
+ *
2601
+ * _.get(object, ['a', '0', 'b', 'c']);
2602
+ * // => 3
2603
+ *
2604
+ * _.get(object, 'a.b.c', 'default');
2605
+ * // => 'default'
2606
+ */
2607
+ function get(object, path, defaultValue) {
2608
+ var result = object == null ? undefined : baseGet(object, path);
2609
+ return result === undefined ? defaultValue : result;
2610
+ }
2611
+
2612
+ module.exports = get;
2613
+
2614
+
2615
  /***/ }),
2616
  /* 44 */
2617
  /***/ (function(module, exports, __webpack_require__) {
2986
  __webpack_require__.d(proptypes_namespaceObject, "ReactSelectOptions", function() { return ReactSelectOptions; });
2987
 
2988
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js
2989
+ var toConsumableArray = __webpack_require__(32);
2990
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
2991
 
2992
  // EXTERNAL MODULE: ./node_modules/lodash/uniq.js
3147
  /***/ (function(module, exports, __webpack_require__) {
3148
 
3149
  var def = __webpack_require__(21).f;
3150
+ var has = __webpack_require__(35);
3151
  var TAG = __webpack_require__(11)('toStringTag');
3152
 
3153
  module.exports = function (it, tag, stat) {
3440
  /* 73 */
3441
  /***/ (function(module, exports) {
3442
 
3443
+ module.exports = function(module) {
3444
+ if (!module.webpackPolyfill) {
3445
+ module.deprecate = function() {};
3446
+ module.paths = [];
3447
+ // module.parent = undefined by default
3448
+ if (!module.children) module.children = [];
3449
+ Object.defineProperty(module, "loaded", {
3450
+ enumerable: true,
3451
+ get: function() {
3452
+ return module.l;
3453
+ }
3454
+ });
3455
+ Object.defineProperty(module, "id", {
3456
+ enumerable: true,
3457
+ get: function() {
3458
+ return module.i;
3459
+ }
3460
+ });
3461
+ module.webpackPolyfill = 1;
3462
+ }
3463
+ return module;
3464
+ };
3465
 
3466
 
3467
  /***/ }),
4617
 
4618
  __webpack_require__(285);
4619
  var global = __webpack_require__(8);
4620
+ var hide = __webpack_require__(29);
4621
+ var Iterators = __webpack_require__(40);
4622
  var TO_STRING_TAG = __webpack_require__(11)('toStringTag');
4623
 
4624
  var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
4642
 
4643
  var classof = __webpack_require__(109);
4644
  var ITERATOR = __webpack_require__(11)('iterator');
4645
+ var Iterators = __webpack_require__(40);
4646
  module.exports = __webpack_require__(9).getIteratorMethod = function (it) {
4647
  if (it != undefined) return it[ITERATOR]
4648
  || it['@@iterator']
5279
 
5280
  try {
5281
  // This works if eval is allowed (see CSP)
5282
+ g = g || new Function("return this")();
5283
  } catch (e) {
5284
  // This works if the window reference is available
5285
  if (typeof window === "object") g = window;
5344
  /***/ (function(module, exports, __webpack_require__) {
5345
 
5346
  var baseIndexOf = __webpack_require__(112),
5347
+ isArrayLike = __webpack_require__(41),
5348
  isString = __webpack_require__(97),
5349
  toInteger = __webpack_require__(84),
5350
  values = __webpack_require__(363);
5655
  var LIBRARY = __webpack_require__(48);
5656
  var $export = __webpack_require__(18);
5657
  var redefine = __webpack_require__(165);
5658
+ var hide = __webpack_require__(29);
5659
+ var Iterators = __webpack_require__(40);
5660
  var $iterCreate = __webpack_require__(210);
5661
  var setToStringTag = __webpack_require__(61);
5662
  var getPrototypeOf = __webpack_require__(214);
5765
  /***/ (function(module, exports, __webpack_require__) {
5766
 
5767
  // check on default Array iterator
5768
+ var Iterators = __webpack_require__(40);
5769
  var ITERATOR = __webpack_require__(11)('iterator');
5770
  var ArrayProto = Array.prototype;
5771
 
6091
  /* 145 */
6092
  /***/ (function(module, exports, __webpack_require__) {
6093
 
6094
+ var ctx = __webpack_require__(39);
6095
  var invoke = __webpack_require__(291);
6096
  var html = __webpack_require__(132);
6097
  var cel = __webpack_require__(78);
6219
  var post_types = __webpack_require__(75);
6220
 
6221
  // EXTERNAL MODULE: ./src/modules/data/forms/index.js + 7 modules
6222
+ var data_forms = __webpack_require__(33);
6223
 
6224
  // EXTERNAL MODULE: ./src/modules/data/plugins/index.js + 6 modules
6225
  var plugins = __webpack_require__(59);
6606
 
6607
  var baseGetAllKeys = __webpack_require__(161),
6608
  getSymbols = __webpack_require__(105),
6609
+ keys = __webpack_require__(30);
6610
 
6611
  /**
6612
  * Creates an array of own enumerable property names and symbols of `object`.
6706
  /* 165 */
6707
  /***/ (function(module, exports, __webpack_require__) {
6708
 
6709
+ module.exports = __webpack_require__(29);
6710
 
6711
 
6712
  /***/ }),
6713
  /* 166 */
6714
  /***/ (function(module, exports, __webpack_require__) {
6715
 
6716
+ var has = __webpack_require__(35);
6717
  var toIObject = __webpack_require__(44);
6718
  var arrayIndexOf = __webpack_require__(212)(false);
6719
  var IE_PROTO = __webpack_require__(80)('IE_PROTO');
6736
  /* 167 */
6737
  /***/ (function(module, exports, __webpack_require__) {
6738
 
6739
+ var Symbol = __webpack_require__(36),
6740
  arrayMap = __webpack_require__(74),
6741
  isArray = __webpack_require__(5),
6742
  isSymbol = __webpack_require__(45);
7324
  /***/ (function(module, exports, __webpack_require__) {
7325
 
7326
  var copyObject = __webpack_require__(72),
7327
+ keys = __webpack_require__(30);
7328
 
7329
  /**
7330
  * The base implementation of `_.assign` without support for multiple sources
7422
  copySymbolsIn = __webpack_require__(343),
7423
  getAllKeys = __webpack_require__(160),
7424
  getAllKeysIn = __webpack_require__(344),
7425
+ getTag = __webpack_require__(42),
7426
  initCloneArray = __webpack_require__(345),
7427
  initCloneByTag = __webpack_require__(346),
7428
  initCloneObject = __webpack_require__(351),
7431
  isMap = __webpack_require__(352),
7432
  isObject = __webpack_require__(17),
7433
  isSet = __webpack_require__(354),
7434
+ keys = __webpack_require__(30);
7435
 
7436
  /** Used to compose bitmasks for cloning. */
7437
  var CLONE_DEEP_FLAG = 1,
7590
 
7591
  var arrayLikeKeys = __webpack_require__(157),
7592
  baseKeysIn = __webpack_require__(339),
7593
+ isArrayLike = __webpack_require__(41);
7594
 
7595
  /**
7596
  * Creates an array of the own and inherited enumerable property names of `object`.
9517
  var IteratorPrototype = {};
9518
 
9519
  // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
9520
+ __webpack_require__(29)(IteratorPrototype, __webpack_require__(11)('iterator'), function () { return this; });
9521
 
9522
  module.exports = function (Constructor, NAME, next) {
9523
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
9591
  /***/ (function(module, exports, __webpack_require__) {
9592
 
9593
  // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
9594
+ var has = __webpack_require__(35);
9595
  var toObject = __webpack_require__(81);
9596
  var IE_PROTO = __webpack_require__(80)('IE_PROTO');
9597
  var ObjectProto = Object.prototype;
9611
 
9612
  "use strict";
9613
 
9614
+ var ctx = __webpack_require__(39);
9615
  var $export = __webpack_require__(18);
9616
  var toObject = __webpack_require__(81);
9617
  var call = __webpack_require__(133);
9807
  /* 221 */
9808
  /***/ (function(module, exports, __webpack_require__) {
9809
 
9810
+ var Symbol = __webpack_require__(36);
9811
 
9812
  /** Used for built-in method references. */
9813
  var objectProto = Object.prototype;
10843
  equalArrays = __webpack_require__(139),
10844
  equalByTag = __webpack_require__(261),
10845
  equalObjects = __webpack_require__(263),
10846
+ getTag = __webpack_require__(42),
10847
  isArray = __webpack_require__(5),
10848
  isBuffer = __webpack_require__(58),
10849
  isTypedArray = __webpack_require__(85);
10957
  /* 261 */
10958
  /***/ (function(module, exports, __webpack_require__) {
10959
 
10960
+ var Symbol = __webpack_require__(36),
10961
  Uint8Array = __webpack_require__(162),
10962
  eq = __webpack_require__(67),
10963
  equalArrays = __webpack_require__(139),
11195
  /***/ (function(module, exports, __webpack_require__) {
11196
 
11197
  var isStrictComparable = __webpack_require__(140),
11198
+ keys = __webpack_require__(30);
11199
 
11200
  /**
11201
  * Gets the property names, values, and compare flags of `object`.
11225
  /***/ (function(module, exports, __webpack_require__) {
11226
 
11227
  var baseIsEqual = __webpack_require__(138),
11228
+ get = __webpack_require__(43),
11229
  hasIn = __webpack_require__(268),
11230
  isKey = __webpack_require__(89),
11231
  isStrictComparable = __webpack_require__(140),
11602
  /* 275 */
11603
  /***/ (function(module, exports, __webpack_require__) {
11604
 
11605
+ var Symbol = __webpack_require__(36),
11606
  isArguments = __webpack_require__(57),
11607
  isArray = __webpack_require__(5);
11608
 
12532
 
12533
  var addToUnscopables = __webpack_require__(286);
12534
  var step = __webpack_require__(287);
12535
+ var Iterators = __webpack_require__(40);
12536
  var toIObject = __webpack_require__(44);
12537
 
12538
  // 22.1.3.4 Array.prototype.entries()
12589
 
12590
  var LIBRARY = __webpack_require__(48);
12591
  var global = __webpack_require__(8);
12592
+ var ctx = __webpack_require__(39);
12593
  var classof = __webpack_require__(109);
12594
  var $export = __webpack_require__(18);
12595
  var isObject = __webpack_require__(23);
12889
  /* 290 */
12890
  /***/ (function(module, exports, __webpack_require__) {
12891
 
12892
+ var ctx = __webpack_require__(39);
12893
  var call = __webpack_require__(133);
12894
  var isArrayIter = __webpack_require__(134);
12895
  var anObject = __webpack_require__(16);
13027
  /* 294 */
13028
  /***/ (function(module, exports, __webpack_require__) {
13029
 
13030
+ var hide = __webpack_require__(29);
13031
  module.exports = function (target, src, safe) {
13032
  for (var key in src) {
13033
  if (safe && target[key]) target[key] = src[key];
13204
  var createDesc = __webpack_require__(50);
13205
  var toIObject = __webpack_require__(44);
13206
  var toPrimitive = __webpack_require__(111);
13207
+ var has = __webpack_require__(35);
13208
  var IE8_DOM_DEFINE = __webpack_require__(164);
13209
  var gOPD = Object.getOwnPropertyDescriptor;
13210
 
15288
  var modules_data = __webpack_require__(148);
15289
 
15290
  // EXTERNAL MODULE: ./src/modules/store/middlewares/request/index.js + 4 modules
15291
+ var request = __webpack_require__(37);
15292
 
15293
  // CONCATENATED MODULE: ./src/modules/store/middlewares/index.js
15294
 
17848
  /* 349 */
17849
  /***/ (function(module, exports, __webpack_require__) {
17850
 
17851
+ var Symbol = __webpack_require__(36);
17852
 
17853
  /** Used to convert symbols to primitives and strings. */
17854
  var symbolProto = Symbol ? Symbol.prototype : undefined,
17951
  /* 353 */
17952
  /***/ (function(module, exports, __webpack_require__) {
17953
 
17954
+ var getTag = __webpack_require__(42),
17955
  isObjectLike = __webpack_require__(13);
17956
 
17957
  /** `Object#toString` result references. */
18008
  /* 355 */
18009
  /***/ (function(module, exports, __webpack_require__) {
18010
 
18011
+ var getTag = __webpack_require__(42),
18012
  isObjectLike = __webpack_require__(13);
18013
 
18014
  /** `Object#toString` result references. */
18142
  /* 358 */
18143
  /***/ (function(module, exports, __webpack_require__) {
18144
 
18145
+ var getTag = __webpack_require__(42),
18146
  isObjectLike = __webpack_require__(13);
18147
 
18148
  /** `Object#toString` result references. */
18336
  /***/ (function(module, exports, __webpack_require__) {
18337
 
18338
  var baseValues = __webpack_require__(364),
18339
+ keys = __webpack_require__(30);
18340
 
18341
  /**
18342
  * Creates an array of the own enumerable string keyed property values of `object`.
19302
 
19303
  // ECMAScript 6 symbols shim
19304
  var global = __webpack_require__(8);
19305
+ var has = __webpack_require__(35);
19306
  var DESCRIPTORS = __webpack_require__(22);
19307
  var $export = __webpack_require__(18);
19308
  var redefine = __webpack_require__(165);
19526
  });
19527
 
19528
  // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
19529
+ $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(29)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
19530
  // 19.4.3.5 Symbol.prototype[@@toStringTag]
19531
  setToStringTag($Symbol, 'Symbol');
19532
  // 20.2.1.9 Math[@@toStringTag]
19541
 
19542
  var META = __webpack_require__(66)('meta');
19543
  var isObject = __webpack_require__(23);
19544
+ var has = __webpack_require__(35);
19545
  var setDesc = __webpack_require__(21).f;
19546
  var id = 0;
19547
  var isExtensible = Object.isExtensible || function () {
19754
  var inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);
19755
 
19756
  // EXTERNAL MODULE: ./node_modules/lodash/keys.js
19757
+ var keys = __webpack_require__(30);
19758
  var keys_default = /*#__PURE__*/__webpack_require__.n(keys);
19759
 
19760
  // EXTERNAL MODULE: ./node_modules/lodash/isObject.js
19766
  var isArray_default = /*#__PURE__*/__webpack_require__.n(isArray);
19767
 
19768
  // EXTERNAL MODULE: ./node_modules/lodash/isEmpty.js
19769
+ var isEmpty = __webpack_require__(31);
19770
  var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
19771
 
19772
  // EXTERNAL MODULE: ./node_modules/lodash/noop.js
19983
  var es = __webpack_require__(206);
19984
 
19985
  // EXTERNAL MODULE: ./src/modules/data/forms/index.js + 7 modules
19986
+ var data_forms = __webpack_require__(33);
19987
 
19988
  // CONCATENATED MODULE: ./src/modules/hoc/with-form.js
19989
 
20272
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
20273
  function (test, buggy, set) {
20274
  try {
20275
+ set = __webpack_require__(39)(Function.call, __webpack_require__(304).f(Object.prototype, '__proto__').set, 2);
20276
  set(test, []);
20277
  buggy = !(test instanceof Array);
20278
  } catch (e) { buggy = true; }
20420
 
20421
  var classof = __webpack_require__(109);
20422
  var ITERATOR = __webpack_require__(11)('iterator');
20423
+ var Iterators = __webpack_require__(40);
20424
  module.exports = __webpack_require__(9).isIterable = function (it) {
20425
  var O = Object(it);
20426
  return O[ITERATOR] !== undefined
20463
  /***/ (function(module, exports, __webpack_require__) {
20464
 
20465
  var baseFor = __webpack_require__(411),
20466
+ keys = __webpack_require__(30);
20467
 
20468
  /**
20469
  * The base implementation of `_.forOwn` without support for iteratee shorthands.
20537
  /* 413 */
20538
  /***/ (function(module, exports, __webpack_require__) {
20539
 
20540
+ var isArrayLike = __webpack_require__(41);
20541
 
20542
  /**
20543
  * Creates a `baseEach` or `baseEachRight` function.
20576
  /***/ (function(module, exports, __webpack_require__) {
20577
 
20578
  var baseEach = __webpack_require__(385),
20579
+ isArrayLike = __webpack_require__(41);
20580
 
20581
  /**
20582
  * The base implementation of `_.map` without support for iteratee shorthands.
20604
  /***/ (function(module, exports, __webpack_require__) {
20605
 
20606
  var baseIteratee = __webpack_require__(106),
20607
+ isArrayLike = __webpack_require__(41),
20608
+ keys = __webpack_require__(30);
20609
 
20610
  /**
20611
  * Creates a `_.find` or `_.findLast` function.
20956
  var hoc = __webpack_require__(390);
20957
 
20958
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js
20959
+ var toConsumableArray = __webpack_require__(32);
20960
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
20961
 
20962
  // EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/slicedToArray.js
21091
  allowedBlocks: this.props.allowedBlocks,
21092
  layouts: this.props.layouts,
21093
  template: this.template,
21094
+ templateInsertUpdatesSelection: this.props.templateInsertUpdatesSelection,
21095
  templateLock: this.props.templateLock
21096
  })
21097
  );
21174
  * ```
21175
  */
21176
  pluginTemplates: prop_types_default.a.objectOf(prop_types_default.a.arrayOf(prop_types_default.a.array)),
21177
+ templateInsertUpdatesSelection: prop_types_default.a.bool.isRequired,
21178
+ templateLock: prop_types_default.a.oneOf(['all', 'insert', false])
21179
+ };
21180
+ component_PluginBlockHooks.defaultProps = {
21181
+ templateInsertUpdatesSelection: false };
21182
  /* harmony default export */ var component = (component_PluginBlockHooks);
21183
  // CONCATENATED MODULE: ./src/modules/components/plugin-block-hooks/container.js
21184
  /**
common/src/resources/js/app/components.min.js CHANGED
@@ -1,4 +1,4 @@
1
- var tribe="object"==typeof tribe?tribe:{};tribe.common=tribe.common||{},tribe.common.components=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=546)}([,function(t,e,n){t.exports=n(310)()},function(t,e){t.exports=React},function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(277));e.default=r.default||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}},,function(t,e){var n=Array.isArray;t.exports=n},function(t,e){t.exports=function(){}},,function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(136),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e,n){var r=n(100)("wks"),o=n(66),i=n(8).Symbol,u="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=r},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r="@@MT/COMMON"},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){"use strict";n.r(e),n.d(e,"createStore",function(){return a}),n.d(e,"combineReducers",function(){return s}),n.d(e,"bindActionCreators",function(){return l}),n.d(e,"applyMiddleware",function(){return h}),n.d(e,"compose",function(){return d}),n.d(e,"__DO_NOT_USE__ActionTypes",function(){return i});var r=n(122),o=function(){return Math.random().toString(36).substring(7).split("").join(".")},i={INIT:"@@redux/INIT"+o(),REPLACE:"@@redux/REPLACE"+o(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+o()}};function u(t){if("object"!=typeof t||null===t)return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function a(t,e,n){var o;if("function"==typeof e&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function");if("function"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(a)(t,e)}if("function"!=typeof t)throw new Error("Expected the reducer to be a function.");var c=t,s=e,f=[],l=f,p=!1;function d(){l===f&&(l=f.slice())}function h(){if(p)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return s}function v(t){if("function"!=typeof t)throw new Error("Expected the listener to be a function.");if(p)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var e=!0;return d(),l.push(t),function(){if(e){if(p)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");e=!1,d();var n=l.indexOf(t);l.splice(n,1)}}}function y(t){if(!u(t))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===t.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(p)throw new Error("Reducers may not dispatch actions.");try{p=!0,s=c(s,t)}finally{p=!1}for(var e=f=l,n=0;n<e.length;n++){(0,e[n])()}return t}return y({type:i.INIT}),(o={dispatch:y,subscribe:v,getState:h,replaceReducer:function(t){if("function"!=typeof t)throw new Error("Expected the nextReducer to be a function.");c=t,y({type:i.REPLACE})}})[r.a]=function(){var t,e=v;return(t={subscribe:function(t){if("object"!=typeof t||null===t)throw new TypeError("Expected the observer to be an object.");function n(){t.next&&t.next(h())}return n(),{unsubscribe:e(n)}}})[r.a]=function(){return this},t},o}function c(t,e){var n=e&&e.type;return"Given "+(n&&'action "'+String(n)+'"'||"an action")+', reducer "'+t+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function s(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var o=e[r];0,"function"==typeof t[o]&&(n[o]=t[o])}var u,a=Object.keys(n);try{!function(t){Object.keys(t).forEach(function(e){var n=t[e];if(void 0===n(void 0,{type:i.INIT}))throw new Error('Reducer "'+e+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===n(void 0,{type:i.PROBE_UNKNOWN_ACTION()}))throw new Error('Reducer "'+e+"\" returned undefined when probed with a random type. Don't try to handle "+i.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(n)}catch(t){u=t}return function(t,e){if(void 0===t&&(t={}),u)throw u;for(var r=!1,o={},i=0;i<a.length;i++){var s=a[i],f=n[s],l=t[s],p=f(l,e);if(void 0===p){var d=c(s,e);throw new Error(d)}o[s]=p,r=r||p!==l}return r?o:t}}function f(t,e){return function(){return e(t.apply(this,arguments))}}function l(t,e){if("function"==typeof t)return f(t,e);if("object"!=typeof t||null===t)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===t?"null":typeof t)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var n=Object.keys(t),r={},o=0;o<n.length;o++){var i=n[o],u=t[i];"function"==typeof u&&(r[i]=f(u,e))}return r}function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function d(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return 0===e.length?function(t){return t}:1===e.length?e[0]:e.reduce(function(t,e){return function(){return t(e.apply(void 0,arguments))}})}function h(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return function(){var n=t.apply(void 0,arguments),r=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},o={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},i=e.map(function(t){return t(o)});return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){p(t,e,n[e])})}return t}({},n,{dispatch:r=d.apply(void 0,i)(n.dispatch)})}}}},function(t,e,n){var r;
2
  /*!
3
  Copyright (c) 2017 Jed Watson.
4
  Licensed under the MIT License (MIT), see
@@ -9,7 +9,7 @@ var tribe="object"==typeof tribe?tribe:{};tribe.common=tribe.common||{},tribe.co
9
  Licensed under the MIT License (MIT), see
10
  http://jedwatson.github.io/classnames
11
  */
12
- !function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e<arguments.length;e++){var r=arguments[e];if(r){var i=typeof r;if("string"===i||"number"===i)t.push(r);else if(Array.isArray(r)&&r.length){var u=o.apply(null,r);u&&t.push(u)}else if("object"===i)for(var a in r)n.call(r,a)&&r[a]&&t.push(a)}}return t.join(" ")}t.exports?(o.default=o,t.exports=o):void 0===(r=function(){return o}.apply(e,[]))||(t.exports=r)}()},function(t,e,n){var r=n(23);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(8),o=n(9),i=n(40),u=n(28),a=n(34),c=function(t,e,n){var s,f,l,p=t&c.F,d=t&c.G,h=t&c.S,v=t&c.P,y=t&c.B,b=t&c.W,g=d?o:o[e]||(o[e]={}),m=g.prototype,_=d?r:h?r[e]:(r[e]||{}).prototype;for(s in d&&(n=e),n)(f=!p&&_&&void 0!==_[s])&&a(g,s)||(l=f?_[s]:n[s],g[s]=d&&"function"!=typeof _[s]?n[s]:y&&f?i(l,r):b&&_[s]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):v&&"function"==typeof l?i(Function.call,l):l,v&&((g.virtual||(g.virtual={}))[s]=l,t&c.R&&m&&!m[s]&&u(m,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){var r=n(37),o=n(221),i=n(222),u="[object Null]",a="[object Undefined]",c=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?a:u:c&&c in Object(t)?o(t):i(t)}},function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(203));e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,r.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){var r=n(16),o=n(164),i=n(111),u=Object.defineProperty;e.f=n(22)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=!n(49)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(220),o=n(225);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(204));e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(t,o.key,o)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},function(t,e,n){"use strict";e.__esModule=!0;var r=u(n(395)),o=u(n(399)),i=u(n(203));function u(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,i.default)(e)));t.prototype=(0,o.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(r.default?(0,r.default)(t,e):t.__proto__=e)}},function(t,e,n){var r=n(21),o=n(50);t.exports=n(22)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(157),o=n(93),i=n(42);t.exports=function(t){return i(t)?r(t):o(t)}},function(t,e,n){var r=n(93),o=n(43),i=n(57),u=n(5),a=n(42),c=n(58),s=n(62),f=n(85),l="[object Map]",p="[object Set]",d=Object.prototype.hasOwnProperty;t.exports=function(t){if(null==t)return!0;if(a(t)&&(u(t)||"string"==typeof t||"function"==typeof t.splice||c(t)||f(t)||i(t)))return!t.length;var e=o(t);if(e==l||e==p)return!t.size;if(s(t))return!r(t).length;for(var n in t)if(d.call(t,n))return!1;return!0}},function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(207));e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,r.default)(t)}},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"ADD_FORM",function(){return p}),n.d(r,"SET_FORM_FIELDS",function(){return d}),n.d(r,"CREATE_FORM_DRAFT",function(){return h}),n.d(r,"EDIT_FORM_ENTRY",function(){return v}),n.d(r,"SUBMIT_FORM",function(){return y}),n.d(r,"CLEAR_FORM",function(){return b}),n.d(r,"SET_SAVING_FORM",function(){return g}),n.d(r,"ADD_VOLATILE_ID",function(){return m}),n.d(r,"REMOVE_VOLATILE_ID",function(){return _});var o={};n.r(o),n.d(o,"formSelector",function(){return R}),n.d(o,"getFormType",function(){return C}),n.d(o,"getFormEdit",function(){return I}),n.d(o,"getFormCreate",function(){return M}),n.d(o,"getFormSubmit",function(){return L}),n.d(o,"getFormFields",function(){return N}),n.d(o,"getFormSaving",function(){return F}),n.d(o,"getVolatile",function(){return D});var i={};n.r(i),n.d(i,"registerForm",function(){return B}),n.d(i,"clearForm",function(){return W}),n.d(i,"createDraft",function(){return U}),n.d(i,"editEntry",function(){return q}),n.d(i,"setSubmit",function(){return z}),n.d(i,"setSaving",function(){return G}),n.d(i,"addVolatile",function(){return V}),n.d(i,"removeVolatile",function(){return $}),n.d(i,"sendForm",function(){return K}),n.d(i,"maybeRemoveEntry",function(){return H});var u=n(199),a=n.n(u),c=n(3),s=n.n(c),f=n(14),l=n(12),p=l.a+"/ADD_FORM",d=l.a+"/SET_FORM_FIELDS",h=l.a+"/CREATE_FORM_DRAFT",v=l.a+"/EDIT_FORM_ENTRY",y=l.a+"/SUBMIT_FORM",b=l.a+"/CLEAR_FORM",g=l.a+"/SET_SAVING_FORM",m=l.a+"/ADD_VOLATILE_ID",_=l.a+"/REMOVE_VOLATILE_ID",x={edit:!1,create:!1,submit:!1,saving:!1,fields:{},type:n(75).EVENT},w=n(31),O=n.n(w),j=Object(f.combineReducers)({byId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];switch(e.type){case p:case b:case d:case h:case v:case y:case g:return s()({},t,a()({},e.payload.id,function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:x,e=arguments[1];switch(e.type){case p:return s()({},t,{type:e.payload.type});case b:return s()({},t,x,{type:t.type});case h:return s()({},t,{submit:!1,edit:!1,create:!0,fields:e.payload.fields});case g:return s()({},t,{saving:e.payload.saving});case v:return s()({},t,{create:!1,submit:!1,edit:!0,fields:e.payload.fields});case y:return s()({},t,{submit:!0});default:return t}}(t[e.payload.id],e)));default:return t}},volatile:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1];switch(e.type){case m:return[].concat(O()(t),[e.payload.id]);case _:return t.filter(function(t){return t!==e.payload.id});default:return t}}}),E=n(35),S=n.n(E),P=n(30),A=n.n(P),k=n(38),T=n(39),R=function(t,e){return t.forms.byId[e.name]},C=Object(T.createSelector)([R],function(t){return t?t.type:x.type}),I=Object(T.createSelector)([R],function(t){return t?t.edit:x.edit}),M=Object(T.createSelector)([R],function(t){return t?t.create:x.create}),L=Object(T.createSelector)([R],function(t){return t?t.submit:x.submit}),N=Object(T.createSelector)([R],function(t){return t?t.fields:x.fields}),F=Object(T.createSelector)([R],function(t){return t?t.saving:x.saving}),D=function(t){return t.forms.volatile},B=function(t,e){return{type:p,payload:{id:t,type:e}}},W=function(t){return{type:b,payload:{id:t}}},U=function(t,e){return{type:h,payload:{id:t,fields:e}}},q=function(t,e){return{type:v,payload:{id:t,fields:e}}},z=function(t){return{type:y,payload:{id:t}}},G=function(t,e){return{type:g,payload:{id:t,saving:e}}},V=function(t){return{type:m,payload:{id:t}}},$=function(t){return{type:_,payload:{id:t}}},K=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];return function(r,o){var i=o(),u={name:t},a=C(i,u),c=M(i,u),s=N(i,u);if(!F(i,u)){var f={path:c?""+a:a+"/"+s.id,params:{method:c?"POST":"PUT",body:JSON.stringify(e)},actions:{start:function(){return r(G(t,!0))},success:function(e){var o=e.body,i=S()(o,"id","");c&&i&&r(V(i)),n(o),r(W(t)),r(G(t,!1))},error:function(){r(W(t)),r(G(t,!1))}}};r(k.actions.wpRequest(f))}}},H=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(n,r){var o=r(),i=C(o,{name:t});if(!A()(e)){var u=i+"/"+e.id,a={path:u,actions:{success:function(t){return function(e){return function(n){var r=n.body,o=r.id;if("draft"===r.status){var i={path:e,params:{method:"DELETE"},actions:{success:function(){return t($(o))}}};t(k.actions.wpRequest(i))}else t($(o))}}}(n)(u)}};n(k.actions.wpRequest(a))}}};n.d(e,"types",function(){return r}),n.d(e,"actions",function(){return i}),n.d(e,"selectors",function(){return o});e.default=j},,function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(142);t.exports=function(t,e,n){var o=null==t?void 0:r(t,e);return void 0===o?n:o}},function(t,e,n){"use strict";n.r(e),n.d(e,"get",function(){return r}),n.d(e,"google",function(){return o}),n.d(e,"dateSettings",function(){return i}),n.d(e,"editor",function(){return u}),n.d(e,"editorConstants",function(){return a}),n.d(e,"mapsAPI",function(){return c}),n.d(e,"priceSettings",function(){return s}),n.d(e,"settings",function(){return f}),n.d(e,"timezoneHtml",function(){return l}),n.d(e,"config",function(){return p}),n.d(e,"adminUrl",function(){return d}),n.d(e,"tickets",function(){return h}),n.d(e,"rest",function(){return v}),n.d(e,"restNonce",function(){return y}),n.d(e,"editorDefaults",function(){return b}),n.d(e,"list",function(){return g});var r=function(t,e){return window[t]||e},o=function(){return r("google")},i=function(){return r("tribe_date_settings")},u=function(){return r("tribe_blocks_editor")},a=function(){return r("tribe_blocks_editor_constants")},c=function(){return r("tribe_blocks_editor_google_maps_api")},s=function(){return r("tribe_blocks_editor_price_settings")},f=function(){return r("tribe_blocks_editor_settings")},l=function(){return r("tribe_blocks_editor_timezone_html","")},p=function(){return r("tribe_js_config",{})},d=function(){return p().admin_url||""},h=function(){return p().tickets||{}},v=function(){return p().rest||{}},y=function(){return v().nonce||{}},b=function(){return p().editor_defaults||{}},g=function(){return{countries:r("tribe_data_countries"),us_states:r("tribe_data_us_states")}}},function(t,e,n){var r=n(10).Symbol;t.exports=r},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"WP_REQUEST",function(){return u});var o={};n.r(o),n.d(o,"wpRequest",function(){return a});var i={};n.r(i),n.d(i,"toWpParams",function(){return v}),n.d(i,"toWPQuery",function(){return y}),n.d(i,"getTotalPages",function(){return b});var u=n(12).a+"/WP_REQUEST",a=function(t){return{type:u,meta:t}},c=n(3),s=n.n(c),f=n(120),l=n.n(f),p=n(30),d=n.n(p),h=n(200),v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=s()({orderby:"title",status:["draft","publish"],order:"asc",page:1},t);return l()(e.search)||d()(e.search)||(e.orderby="relevance"),d()(e.exclude)&&delete e.exclude,e},y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object(h.stringify)(v(t))},b=function(t){var e=parseInt(t.get("x-wp-totalpages"),10);return isNaN(e)?0:e},g=n(64),m=n.n(g),_=n(121),x=n.n(_),w=n(201),O=n.n(w),j=n(35),E=n.n(j),S=n(6),P=n.n(S),A=(n(205),n(36)),k=function(){return function(t){return function(){var e=x()(m.a.mark(function e(n){var o,i,u,a,c,f,l,p,d,h,v,y,b,g,_,x,w,j,S,k;return m.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n.type===r.WP_REQUEST){e.next=2;break}return e.abrupt("return",t(n));case 2:if(o=n.meta,u=(i=void 0===o?{}:o).path,a=void 0===u?"":u,c=i.params,f=void 0===c?{}:c,t(n),l=E()(Object(A.config)(),"rest",{}),p=l.url,d=void 0===p?"":p,h=l.nonce,v=(void 0===h?{}:h).wp_rest||"",y=l.namespaces||{},b=y.core||"wp/v2",g=""+d+b,_=s()({start:P.a,success:P.a,error:P.a,none:P.a},E()(i,"actions",{})),""!==a){e.next=15;break}return _.none(a),e.abrupt("return");case 15:return x=g+"/"+a,_.start(x,f),w=s()({Accept:"application/json","Content-Type":"application/json"},E()(f,"headers",{}),{"X-WP-Nonce":v}),e.prev=18,e.next=21,fetch(x,s()({},f,{credentials:"include",headers:w}));case 21:if(j=e.sent,S=j.status,O()(S,200,300)){e.next=25;break}throw j;case 25:return e.next=27,j.json();case 27:return k=e.sent,_.success({body:k,headers:j.headers}),e.abrupt("return",[j,k]);case 32:return e.prev=32,e.t0=e.catch(18),_.error(e.t0),e.abrupt("return",e.t0);case 36:case"end":return e.stop()}},e,void 0,[[18,32]])}));return function(t){return e.apply(this,arguments)}}()}};n.d(e,"default",function(){return k}),n.d(e,"types",function(){return r}),n.d(e,"actions",function(){return o}),n.d(e,"utils",function(){return i})},function(t,e,n){"use strict";function r(t,e){return t===e}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=null,o=null;return function(){return function(t,e,n){if(null===e||null===n||e.length!==n.length)return!1;for(var r=e.length,o=0;o<r;o++)if(!t(e[o],n[o]))return!1;return!0}(e,n,arguments)||(o=t.apply(null,arguments)),n=arguments,o}}function i(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var e=arguments.length,r=Array(e),i=0;i<e;i++)r[i]=arguments[i];var u=0,a=r.pop(),c=function(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(t){return"function"==typeof t})){var n=e.map(function(t){return typeof t}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+n+"]")}return e}(r),s=t.apply(void 0,[function(){return u++,a.apply(null,arguments)}].concat(n)),f=o(function(){for(var t=[],e=c.length,n=0;n<e;n++)t.push(c[n].apply(null,arguments));return s.apply(null,t)});return f.resultFunc=a,f.recomputations=function(){return u},f.resetRecomputations=function(){return u=0},f}}e.__esModule=!0,e.defaultMemoize=o,e.createSelectorCreator=i,e.createStructuredSelector=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u;if("object"!=typeof t)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof t);var n=Object.keys(t);return e(n.map(function(e){return t[e]}),function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return e.reduce(function(t,e,r){return t[n[r]]=e,t},{})})};var u=e.createSelector=i(o)},function(t,e,n){var r=n(52);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports={}},function(t,e,n){var r=n(92),o=n(86);t.exports=function(t){return null!=t&&o(t.length)&&!r(t)}},function(t,e,n){var r=n(255),o=n(83),i=n(256),u=n(151),a=n(152),c=n(19),s=n(137),f=s(r),l=s(o),p=s(i),d=s(u),h=s(a),v=c;(r&&"[object DataView]"!=v(new r(new ArrayBuffer(1)))||o&&"[object Map]"!=v(new o)||i&&"[object Promise]"!=v(i.resolve())||u&&"[object Set]"!=v(new u)||a&&"[object WeakMap]"!=v(new a))&&(v=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?s(n):"";if(r)switch(r){case f:return"[object DataView]";case l:return"[object Map]";case p:return"[object Promise]";case d:return"[object Set]";case h:return"[object WeakMap]"}return e}),t.exports=v},function(t,e,n){var r=n(131),o=n(77);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(19),o=n(13),i="[object Symbol]";t.exports=function(t){return"symbol"==typeof t||o(t)&&r(t)==i}},function(t,e,n){var r=n(45),o=1/0;t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-o?"-0":e}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=!0},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports=function(t){return t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(24)(Object,"create");t.exports=r},function(t,e,n){var r=n(230),o=n(231),i=n(232),u=n(233),a=n(234);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=i,c.prototype.has=u,c.prototype.set=a,t.exports=c},function(t,e,n){var r=n(67);t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},function(t,e,n){var r=n(236);t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},function(t,e,n){var r=n(245),o=n(13),i=Object.prototype,u=i.hasOwnProperty,a=i.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(t){return o(t)&&u.call(t,"callee")&&!a.call(t,"callee")};t.exports=c},function(t,e,n){(function(t){var r=n(10),o=n(246),i=e&&!e.nodeType&&e,u=i&&"object"==typeof t&&t&&!t.nodeType&&t,a=u&&u.exports===i?r.Buffer:void 0,c=(a?a.isBuffer:void 0)||o;t.exports=c}).call(this,n(73)(t))},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"ADD_PLUGIN",function(){return d}),n.d(r,"REMOVE_PLUGIN",function(){return h});var o={};n.r(o),n.d(o,"addPlugin",function(){return v}),n.d(o,"removePlugin",function(){return y});var i={};n.r(i),n.d(i,"getPlugins",function(){return x}),n.d(i,"hasPlugin",function(){return w});var u={};n.r(u),n.d(u,"EVENTS_PLUGIN",function(){return O}),n.d(u,"EVENTS_PRO_PLUGIN",function(){return j}),n.d(u,"TICKETS",function(){return E}),n.d(u,"TICKETS_PLUS",function(){return S});var a={};n.r(a),n.d(a,"ReactSelectOption",function(){return k}),n.d(a,"ReactSelectOptions",function(){return T});var c=n(31),s=n.n(c),f=n(197),l=n.n(f),p=n(12),d=p.a+"/ADD_PLUGIN",h=p.a+"/REMOVE_PLUGIN",v=function(t){return{type:d,payload:{name:t}}},y=function(t){return{type:h,payload:{name:t}}},b=n(198),g=n.n(b),m=n(126),_=n.n(m),x=function(t){return t.plugins},w=g()(function(t,e){return _()(x(t),e)}),O="events",j="events-pro",E="tickets",S="tickets-plus",P=n(1),A=n.n(P),k=A.a.shape({label:A.a.string.isRequired,value:A.a.any.isRequired}),T=A.a.arrayOf(k);n.d(e,"types",function(){return r}),n.d(e,"actions",function(){return o}),n.d(e,"selectors",function(){return i}),n.d(e,"constants",function(){return u}),n.d(e,"proptypes",function(){return a});e.default=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1];switch(e.type){case r.ADD_PLUGIN:return l()([].concat(s()(t),[e.payload.name]));case r.REMOVE_PLUGIN:return[].concat(s()(t)).filter(function(t){return t!==e.payload.name});default:return t}}},function(t,e,n){"use strict";var r=n(209)(!0);n(130)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(21).f,o=n(34),i=n(11)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},,function(t,e,n){t.exports=n(281)},function(t,e,n){var r=n(166),o=n(101);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(69),o=n(17);t.exports=function(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=r(t.prototype),i=t.apply(n,e);return o(i)?i:n}}},function(t,e,n){var r=n(17),o=Object.create,i=function(){function t(){}return function(e){if(!r(e))return{};if(o)return o(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=i},function(t,e){t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}},function(t,e){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var o=typeof t;return!!(e=null==e?n:e)&&("number"==o||"symbol"!=o&&r.test(t))&&t>-1&&t%1==0&&t<e}},function(t,e,n){var r=n(189),o=n(190);t.exports=function(t,e,n,i){var u=!n;n||(n={});for(var a=-1,c=e.length;++a<c;){var s=e[a],f=i?i(n[s],t[s],s,n,t):void 0;void 0===f&&(f=t[s]),u?o(n,s,f):r(n,s,f)}return n}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,o=Array(r);++n<r;)o[n]=e(t[n],n,t);return o}},function(t,e,n){"use strict";n.r(e),n.d(e,"EVENT",function(){return r}),n.d(e,"VENUE",function(){return o}),n.d(e,"ORGANIZER",function(){return i});var r="tribe_events",o="tribe_venue",i="tribe_organizer"},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(23),o=n(8).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){var r=n(76),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(100)("keys"),o=n(66);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(77);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(217),o=n(235),i=n(237),u=n(238),a=n(239);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=i,c.prototype.has=u,c.prototype.set=a,t.exports=c},function(t,e,n){var r=n(24)(n(10),"Map");t.exports=r},function(t,e,n){var r=n(155);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(247),o=n(87),i=n(88),u=i&&i.isTypedArray,a=u?o(u):r;t.exports=a},function(t,e){var n=9007199254740991;t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}},function(t,e){t.exports=function(t){return function(e){return t(e)}}},function(t,e,n){(function(t){var r=n(136),o=e&&!e.nodeType&&e,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,u=i&&i.exports===o&&r.process,a=function(){try{var t=i&&i.require&&i.require("util").types;return t||u&&u.binding&&u.binding("util")}catch(t){}}();t.exports=a}).call(this,n(73)(t))},function(t,e,n){var r=n(5),o=n(45),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!o(t))||u.test(t)||!i.test(t)||null!=e&&t in Object(e)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){"use strict";var r=n(52);t.exports.f=function(t){return new function(t){var e,n;this.promise=new t(function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r}),this.resolve=r(e),this.reject=r(n)}(t)}},function(t,e,n){var r=n(19),o=n(17),i="[object AsyncFunction]",u="[object Function]",a="[object GeneratorFunction]",c="[object Proxy]";t.exports=function(t){if(!o(t))return!1;var e=r(t);return e==u||e==a||e==i||e==c}},function(t,e,n){var r=n(62),o=n(248),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return o(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e,n){var r=n(54),o=n(249),i=n(250),u=n(251),a=n(252),c=n(253);function s(t){var e=this.__data__=new r(t);this.size=e.size}s.prototype.clear=o,s.prototype.delete=i,s.prototype.get=u,s.prototype.has=a,s.prototype.set=c,t.exports=s},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,o=t.length;++n<r;)t[o+n]=e[n];return t}},function(t,e,n){var r=n(167);t.exports=function(t){return null==t?"":r(t)}},function(t,e,n){var r=n(19),o=n(5),i=n(13),u="[object String]";t.exports=function(t){return"string"==typeof t||!o(t)&&i(t)&&r(t)==u}},function(t,e,n){"use strict";var r=n(14),o=function(t){return function(t){return!!t&&"object"==typeof t}(t)&&!function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===i}(t)}(t)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function u(t,e){return!1!==e.clone&&e.isMergeableObject(t)?c(function(t){return Array.isArray(t)?[]:{}}(t),t,e):t}function a(t,e,n){return t.concat(e).map(function(t){return u(t,n)})}function c(t,e,n){(n=n||{}).arrayMerge=n.arrayMerge||a,n.isMergeableObject=n.isMergeableObject||o;var r=Array.isArray(e);return r===Array.isArray(t)?r?n.arrayMerge(t,e,n):function(t,e,n){var r={};return n.isMergeableObject(t)&&Object.keys(t).forEach(function(e){r[e]=u(t[e],n)}),Object.keys(e).forEach(function(o){n.isMergeableObject(e[o])&&t[o]?r[o]=c(t[o],e[o],n):r[o]=u(e[o],n)}),r}(t,e,n):u(e,n)}c.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(t,n){return c(t,n,e)},{})};var s=c;var f=function t(e){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return e.length<=r.length?e.apply(void 0,r):function(){for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return t.apply(void 0,[e].concat(r,o))}},l=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},p=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var u,a=t[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function h(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var v=function(t){return null!==t&&"object"===(void 0===t?"undefined":d(t))},y=function(t){return function(t){return"function"==typeof t}(t)},b=function(t){return(y(t)||v(t))&&function(t){return Object.values(t).some(y)}(t)},g=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return r.compose.apply(void 0,function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}(e.reverse()))}(function(t){return Object.entries(t).map(function(t){var e=p(t,2),n=e[0],o=e[1];return b(o)?h({},n,Object(r.combineReducers)(g(o))):y(o)?h({},n,o):void 0})},function(t){return t.filter(v)},function(t){return t.reduce(function(t,e){return s(t,e)},{})});var m=f(function(t,e){return Object(r.combineReducers)(l({},t,g(e)))});function _(t){return m(t)}var x=n(123),w=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var u,a=t[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var O=f(function(t,e){return e.injectedReducers={},e.injectReducers=function(n){Object.entries(n).forEach(function(n){var r=w(n,2),o=r[0],i=r[1];Object(x.has)(e.injectedReducers,o)||(Object(x.set)(e.injectedReducers,o,i),e.replaceReducer(t(e.injectedReducers)))})},e});n.d(e,"b",function(){return _}),n.d(e,"a",function(){return O})},,function(t,e,n){var r=n(9),o=n(8),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(48)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}},function(t,e,n){var r=n(176),o=n(321),i=n(322),u=n(178),a=n(335),c=n(182),s=n(336),f=n(184),l=n(186),p=n(84),d="Expected a function",h=1,v=2,y=8,b=16,g=32,m=64,_=Math.max;t.exports=function(t,e,n,x,w,O,j,E){var S=e&v;if(!S&&"function"!=typeof t)throw new TypeError(d);var P=x?x.length:0;if(P||(e&=~(g|m),x=w=void 0),j=void 0===j?j:_(p(j),0),E=void 0===E?E:p(E),P-=w?w.length:0,e&m){var A=x,k=w;x=w=void 0}var T=S?void 0:c(t),R=[t,e,n,x,w,A,k,O,j,E];if(T&&s(R,T),t=R[0],e=R[1],n=R[2],x=R[3],w=R[4],!(E=R[9]=void 0===R[9]?S?0:t.length:_(R[9]-P,0))&&e&(y|b)&&(e&=~(y|b)),e&&e!=h)C=e==y||e==b?i(t,e,E):e!=g&&e!=(h|g)||w.length?u.apply(void 0,R):a(t,e,n,x);else var C=o(t,e,n);return l((T?r:f)(C,R),t,e)}},function(t,e){var n="__lodash_placeholder__";t.exports=function(t,e){for(var r=-1,o=t.length,i=0,u=[];++r<o;){var a=t[r];a!==e&&a!==n||(t[r]=n,u[i++]=r)}return u}},function(t,e,n){var r=n(254),o=n(159),i=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols,a=u?function(t){return null==t?[]:(t=Object(t),r(u(t),function(e){return i.call(t,e)}))}:o;t.exports=a},function(t,e,n){var r=n(257),o=n(265),i=n(51),u=n(5),a=n(271);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?u(t)?o(t[0],t[1]):r(t):a(t)}},function(t,e,n){n(285);for(var r=n(8),o=n(28),i=n(41),u=n(11)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<a.length;c++){var s=a[c],f=r[s],l=f&&f.prototype;l&&!l[u]&&o(l,u,s),i[s]=i.Array}},function(t,e,n){var r=n(109),o=n(11)("iterator"),i=n(41);t.exports=n(9).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},function(t,e,n){var r=n(47),o=n(11)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(u=r(e))&&"function"==typeof e.callee?"Arguments":u}},,function(t,e,n){var r=n(23);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(174),o=n(242),i=n(243);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},function(t,e,n){var r=n(69),o=n(115),i=4294967295;function u(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=i,this.__views__=[]}u.prototype=r(o.prototype),u.prototype.constructor=u,t.exports=u},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},function(t,e,n){var r=n(158)(Object.getPrototypeOf,Object);t.exports=r},function(t,e,n){var r=n(162);t.exports=function(t){var e=new t.constructor(t.byteLength);return new r(e).set(new r(t)),e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){t.exports=function(t){return void 0===t}},function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(283));e.default=function(t){return function(){var e=t.apply(this,arguments);return new r.default(function(t,n){return function o(i,u){try{var a=e[i](u),c=a.value}catch(t){return void n(t)}if(!a.done)return r.default.resolve(c).then(function(t){o("next",t)},function(t){o("throw",t)});t(c)}("next")})}}},function(t,e,n){"use strict";(function(t,r){var o,i=n(196);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:r;var u=Object(i.a)(o);e.a=u}).call(this,n(124),n(312)(t))},function(t,e,n){var r,o,i;!function(n,u){"use strict";"object"==typeof t.exports?t.exports=u():(o=[],void 0===(i="function"==typeof(r=u)?r.apply(e,o):r)||(t.exports=i))}(0,function(){"use strict";var t=Object.prototype.toString;function e(t,e){return null!=t&&Object.prototype.hasOwnProperty.call(t,e)}function n(t){if(!t)return!0;if(o(t)&&0===t.length)return!0;if("string"!=typeof t){for(var n in t)if(e(t,n))return!1;return!0}return!1}function r(e){return t.call(e)}var o=Array.isArray||function(e){return"[object Array]"===t.call(e)};function i(t){var e=parseInt(t);return e.toString()===t?e:t}function u(t){t=t||{};var u=function(t){return Object.keys(u).reduce(function(e,n){return"create"===n?e:("function"==typeof u[n]&&(e[n]=u[n].bind(u,t)),e)},{})};function a(n,r){return t.includeInheritedProps||"number"==typeof r&&Array.isArray(n)||e(n,r)}function c(t,e){if(a(t,e))return t[e]}function s(t,e,n,r){if("number"==typeof e&&(e=[e]),!e||0===e.length)return t;if("string"==typeof e)return s(t,e.split(".").map(i),n,r);var o=e[0],u=c(t,o);return 1===e.length?(void 0!==u&&r||(t[o]=n),u):(void 0===u&&("number"==typeof e[1]?t[o]=[]:t[o]={}),s(t[o],e.slice(1),n,r))}return u.has=function(n,r){if("number"==typeof r?r=[r]:"string"==typeof r&&(r=r.split(".")),!r||0===r.length)return!!n;for(var u=0;u<r.length;u++){var a=i(r[u]);if(!("number"==typeof a&&o(n)&&a<n.length||(t.includeInheritedProps?a in Object(n):e(n,a))))return!1;n=n[a]}return!0},u.ensureExists=function(t,e,n){return s(t,e,n,!0)},u.set=function(t,e,n,r){return s(t,e,n,r)},u.insert=function(t,e,n,r){var i=u.get(t,e);r=~~r,o(i)||(i=[],u.set(t,e,i)),i.splice(r,0,n)},u.empty=function(t,e){var i,c;if(!n(e)&&(null!=t&&(i=u.get(t,e)))){if("string"==typeof i)return u.set(t,e,"");if(function(t){return"boolean"==typeof t||"[object Boolean]"===r(t)}(i))return u.set(t,e,!1);if("number"==typeof i)return u.set(t,e,0);if(o(i))i.length=0;else{if(!function(t){return"object"==typeof t&&"[object Object]"===r(t)}(i))return u.set(t,e,null);for(c in i)a(i,c)&&delete i[c]}}},u.push=function(t,e){var n=u.get(t,e);o(n)||(n=[],u.set(t,e,n)),n.push.apply(n,Array.prototype.slice.call(arguments,2))},u.coalesce=function(t,e,n){for(var r,o=0,i=e.length;o<i;o++)if(void 0!==(r=u.get(t,e[o])))return r;return n},u.get=function(t,e,n){if("number"==typeof e&&(e=[e]),!e||0===e.length)return t;if(null==t)return n;if("string"==typeof e)return u.get(t,e.split("."),n);var r=i(e[0]),o=c(t,r);return void 0===o?n:1===e.length?o:u.get(t[r],e.slice(1),n)},u.del=function(t,e){if("number"==typeof e&&(e=[e]),null==t)return t;if(n(e))return t;if("string"==typeof e)return u.del(t,e.split("."));var r=i(e[0]);return a(t,r)?1!==e.length?u.del(t[r],e.slice(1)):(o(t)?t.splice(r,1):delete t[r],t):t},u}var a=u();return a.create=u,a.withInheritedProps=u({includeInheritedProps:!0}),a})},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(16),o=n(211),i=n(101),u=n(80)("IE_PROTO"),a=function(){},c=function(){var t,e=n(78)("iframe"),r=i.length;for(e.style.display="none",n(132).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(a.prototype=r(t),n=new a,a.prototype=null,n[u]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(112),o=n(42),i=n(97),u=n(84),a=n(363),c=Math.max;t.exports=function(t,e,n,s){t=o(t)?t:a(t),n=n&&!s?u(n):0;var f=t.length;return n<0&&(n=c(f+n,0)),i(t)?n<=f&&t.indexOf(e,n)>-1:!!f&&r(t,e,n)>-1}},function(t,e,n){"use strict";n.d(e,"a",function(){return g}),n.d(e,"c",function(){return _});var r=n(25),o=n.n(r),i=n(26),u=n.n(i),a=n(20),c=n.n(a),s=n(27),f=n.n(s),l=n(6),p=n.n(l),d=n(2),h=n.n(d),v=n(1),y=n.n(v),b=27,g="tribe:click:proxy",m=function(t){t.target.dispatchEvent(new CustomEvent(g,{bubbles:!0}))},_=function(t){return t.stopPropagation()};e.b=function(t){var e=function(e){function n(){var t,e,r,i;o()(this,n);for(var u=arguments.length,a=Array(u),s=0;s<u;s++)a[s]=arguments[s];return e=r=c()(this,(t=n.__proto__||Object.getPrototypeOf(n)).call.apply(t,[this].concat(a))),r.nodeRef=h.a.createRef(),r._eventNamespace=g,r._dispatchClickProxyEvent=m,r._interceptClickProxyEvent=_,r.handleKeyDown=function(t){t.keyCode===b&&r.props.onClose()},r.handleClick=function(){return r.props.onClose()},i=e,c()(r,i)}return f()(n,e),u()(n,[{key:"componentDidMount",value:function(){this.props.isOpen&&this._addEventListeners()}},{key:"componentDidUpdate",value:function(t){t.isOpen!==this.props.isOpen&&(this.props.isOpen?this._addEventListeners():this._removeEventListeners())}},{key:"componentWillUnmount",value:function(){this._removeEventListeners()}},{key:"_addEventListeners",value:function(){var t=this;this.node.addEventListener(this._eventNamespace,this._interceptClickProxyEvent),this.blacklistedNodes.forEach(function(e){return e.addEventListener(t._eventNamespace,t._interceptClickProxyEvent)}),document.addEventListener(this._eventNamespace,this.handleClick),document.addEventListener("click",this._dispatchClickProxyEvent),document.addEventListener("keydown",this.handleKeyDown)}},{key:"_removeEventListeners",value:function(){var t=this;this.node.removeEventListener(this._eventNamespace,this._interceptClickProxyEvent),this.blacklistedNodes.forEach(function(e){return e.removeEventListener(t._eventNamespace,t._interceptClickProxyEvent)}),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener(this._eventNamespace,this.handleClick),document.removeEventListener("click",this._dispatchClickProxyEvent)}},{key:"render",value:function(){return wp.element.createElement("div",{ref:this.nodeRef},wp.element.createElement(t,this.props))}},{key:"blacklistedNodes",get:function(){var t=this.props.classNameClickBlacklist.join(", ");return Array.from(document.querySelectorAll(t))}},{key:"node",get:function(){return this.nodeRef.current}}]),n}(d.PureComponent);return e.displayName="WithBlockCloser( "+(t.displayName||t.name||"Component "),e.propTypes={onClose:y.a.func.isRequired,classNameClickBlacklist:y.a.arrayOf(y.a.string).isRequired,isOpen:y.a.bool.isRequired},e.defaultProps={classNameClickBlacklist:[".edit-post-sidebar"],onClose:p.a,isOpen:!1},e}},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(404)),o=i(n(407));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(){return function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,i=!1,u=void 0;try{for(var a,c=(0,o.default)(t);!(r=(a=c.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){i=!0,u=t}finally{try{!r&&c.return&&c.return()}finally{if(i)throw u}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e){t.exports=wp.components},function(t,e,n){"use strict";var r=n(48),o=n(18),i=n(165),u=n(28),a=n(41),c=n(210),s=n(61),f=n(214),l=n(11)("iterator"),p=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,h,v,y,b){c(n,e,h);var g,m,_,x=function(t){if(!p&&t in E)return E[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",O="values"==v,j=!1,E=t.prototype,S=E[l]||E["@@iterator"]||v&&E[v],P=S||x(v),A=v?O?x("entries"):P:void 0,k="Array"==e&&E.entries||S;if(k&&(_=f(k.call(new t)))!==Object.prototype&&_.next&&(s(_,w,!0),r||"function"==typeof _[l]||u(_,l,d)),O&&S&&"values"!==S.name&&(j=!0,P=function(){return S.call(this)}),r&&!b||!p&&!j&&E[l]||u(E,l,P),a[e]=P,a[w]=d,v)if(g={values:O?P:x("values"),keys:y?P:x("keys"),entries:A},b)for(m in g)m in E||i(E,m,g[m]);else o(o.P+o.F*(p||j),e,g);return g}},function(t,e,n){var r=n(47);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(8).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(16);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},function(t,e,n){var r=n(41),o=n(11)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},function(t,e,n){var r=n(11)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],u=i[r]();u.next=function(){return{done:n=!0}},i[r]=function(){return u},t(i)}catch(t){}return n}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(124))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(259),o=n(13);t.exports=function t(e,n,i,u,a){return e===n||(null==e||null==n||!o(e)&&!o(n)?e!=e&&n!=n:r(e,n,i,u,t,a))}},function(t,e,n){var r=n(149),o=n(260),i=n(150),u=1,a=2;t.exports=function(t,e,n,c,s,f){var l=n&u,p=t.length,d=e.length;if(p!=d&&!(l&&d>p))return!1;var h=f.get(t);if(h&&f.get(e))return h==e;var v=-1,y=!0,b=n&a?new r:void 0;for(f.set(t,e),f.set(e,t);++v<p;){var g=t[v],m=e[v];if(c)var _=l?c(m,g,v,e,t,f):c(g,m,v,t,e,f);if(void 0!==_){if(_)continue;y=!1;break}if(b){if(!o(e,function(t,e){if(!i(b,e)&&(g===t||s(g,t,n,c,f)))return b.push(e)})){y=!1;break}}else if(g!==m&&!s(g,m,n,c,f)){y=!1;break}}return f.delete(t),f.delete(e),y}},function(t,e,n){var r=n(17);t.exports=function(t){return t==t&&!r(t)}},function(t,e){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},function(t,e,n){var r=n(143),o=n(46);t.exports=function(t,e){for(var n=0,i=(e=r(e,t)).length;null!=t&&n<i;)t=t[o(e[n++])];return n&&n==i?t:void 0}},function(t,e,n){var r=n(5),o=n(89),i=n(163),u=n(96);t.exports=function(t,e){return r(t)?t:o(t,e)?[t]:i(u(t))}},function(t,e,n){var r=n(16),o=n(52),i=n(11)("species");t.exports=function(t,e){var n,u=r(t).constructor;return void 0===u||void 0==(n=r(u)[i])?e:o(n)}},function(t,e,n){var r,o,i,u=n(40),a=n(291),c=n(132),s=n(78),f=n(8),l=f.process,p=f.setImmediate,d=f.clearImmediate,h=f.MessageChannel,v=f.Dispatch,y=0,b={},g=function(){var t=+this;if(b.hasOwnProperty(t)){var e=b[t];delete b[t],e()}},m=function(t){g.call(t.data)};p&&d||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return b[++y]=function(){a("function"==typeof t?t:Function(t),e)},r(y),y},d=function(t){delete b[t]},"process"==n(47)(l)?r=function(t){l.nextTick(u(g,t,1))}:v&&v.now?r=function(t){v.now(u(g,t,1))}:h?(i=(o=new h).port2,o.port1.onmessage=m,r=u(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",m,!1)):r="onreadystatechange"in s("script")?function(t){c.appendChild(s("script")).onreadystatechange=function(){c.removeChild(this),g.call(t)}}:function(t){setTimeout(u(g,t,1),0)}),t.exports={set:p,clear:d}},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var r=n(16),o=n(23),i=n(91);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";n.r(e);var r=n(75),o=n(32),i=n(59),u=n(98),a=Object(u.b)({plugins:i.default,forms:o.default});n.d(e,"default",function(){return a}),n.d(e,"editor",function(){return r}),n.d(e,"forms",function(){return o}),n.d(e,"plugins",function(){return i})},function(t,e,n){var r=n(82),o=n(240),i=n(241);function u(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}u.prototype.add=u.prototype.push=o,u.prototype.has=i,t.exports=u},function(t,e){t.exports=function(t,e){return t.has(e)}},function(t,e,n){var r=n(24)(n(10),"Set");t.exports=r},function(t,e,n){var r=n(24)(n(10),"WeakMap");t.exports=r},function(t,e,n){var r=n(331),o=n(185)(r);t.exports=o},function(t,e){t.exports=function(t){return t.placeholder}},function(t,e,n){var r=n(156),o=1/0,i=1.7976931348623157e308;t.exports=function(t){return t?(t=r(t))===o||t===-o?(t<0?-1:1)*i:t==t?t:0:0===t?t:0}},function(t,e,n){var r=n(17),o=n(45),i=NaN,u=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,s=/^0o[0-7]+$/i,f=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(o(t))return i;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(u,"");var n=c.test(t);return n||s.test(t)?f(t.slice(2),n?2:8):a.test(t)?i:+t}},function(t,e,n){var r=n(244),o=n(57),i=n(5),u=n(58),a=n(71),c=n(85),s=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),f=!n&&o(t),l=!n&&!f&&u(t),p=!n&&!f&&!l&&c(t),d=n||f||l||p,h=d?r(t.length,String):[],v=h.length;for(var y in t)!e&&!s.call(t,y)||d&&("length"==y||l&&("offset"==y||"parent"==y)||p&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||a(y,v))||h.push(y);return h}},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e){t.exports=function(){return[]}},function(t,e,n){var r=n(161),o=n(105),i=n(29);t.exports=function(t){return r(t,i,o)}},function(t,e,n){var r=n(95),o=n(5);t.exports=function(t,e,n){var i=e(t);return o(t)?i:r(i,n(t))}},function(t,e,n){var r=n(10).Uint8Array;t.exports=r},function(t,e,n){var r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=n(266)(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(r,function(t,n,r,i){e.push(r?i.replace(o,"$1"):n||t)}),e});t.exports=i},function(t,e,n){t.exports=!n(22)&&!n(49)(function(){return 7!=Object.defineProperty(n(78)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){t.exports=n(28)},function(t,e,n){var r=n(34),o=n(44),i=n(212)(!1),u=n(80)("IE_PROTO");t.exports=function(t,e){var n,a=o(t),c=0,s=[];for(n in a)n!=u&&r(a,n)&&s.push(n);for(;e.length>c;)r(a,n=e[c++])&&(~i(s,n)||s.push(n));return s}},function(t,e,n){var r=n(37),o=n(74),i=n(5),u=n(45),a=1/0,c=r?r.prototype:void 0,s=c?c.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return o(e,t)+"";if(u(e))return s?s.call(e):"";var n=e+"";return"0"==n&&1/e==-a?"-0":n}},function(t,e){},function(t,e,n){e.f=n(11)},function(t,e,n){var r=n(8),o=n(9),i=n(48),u=n(169),a=n(21).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:u.f(t)})}},,,function(t,e,n){var r=n(112);t.exports=function(t,e){return!(null==t||!t.length)&&r(t,e,0)>-1}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i<o;)if(e(t[i],i,t))return i;return-1}},function(t,e){t.exports={}},function(t,e,n){var r=n(51),o=n(177),i=o?function(t,e){return o.set(t,e),t}:r;t.exports=i},function(t,e,n){var r=n(152),o=r&&new r;t.exports=o},function(t,e,n){var r=n(179),o=n(180),i=n(323),u=n(68),a=n(181),c=n(154),s=n(334),f=n(104),l=n(10),p=1,d=2,h=8,v=16,y=128,b=512;t.exports=function t(e,n,g,m,_,x,w,O,j,E){var S=n&y,P=n&p,A=n&d,k=n&(h|v),T=n&b,R=A?void 0:u(e);return function p(){for(var d=arguments.length,h=Array(d),v=d;v--;)h[v]=arguments[v];if(k)var y=c(p),b=i(h,y);if(m&&(h=r(h,m,_,k)),x&&(h=o(h,x,w,k)),d-=b,k&&d<E){var C=f(h,y);return a(e,n,t,p.placeholder,g,h,C,O,j,E-d)}var I=P?g:this,M=A?I[e]:e;return d=h.length,O?h=s(h,O):T&&d>1&&h.reverse(),S&&j<d&&(h.length=j),this&&this!==l&&this instanceof p&&(M=R||u(M)),M.apply(I,h)}}},function(t,e){var n=Math.max;t.exports=function(t,e,r,o){for(var i=-1,u=t.length,a=r.length,c=-1,s=e.length,f=n(u-a,0),l=Array(s+f),p=!o;++c<s;)l[c]=e[c];for(;++i<a;)(p||i<u)&&(l[r[i]]=t[i]);for(;f--;)l[c++]=t[i++];return l}},function(t,e){var n=Math.max;t.exports=function(t,e,r,o){for(var i=-1,u=t.length,a=-1,c=r.length,s=-1,f=e.length,l=n(u-c,0),p=Array(l+f),d=!o;++i<l;)p[i]=t[i];for(var h=i;++s<f;)p[h+s]=e[s];for(;++a<c;)(d||i<u)&&(p[h+r[a]]=t[i++]);return p}},function(t,e,n){var r=n(324),o=n(184),i=n(186),u=1,a=2,c=4,s=8,f=32,l=64;t.exports=function(t,e,n,p,d,h,v,y,b,g){var m=e&s;e|=m?f:l,(e&=~(m?l:f))&c||(e&=~(u|a));var _=[t,e,d,m?h:void 0,m?v:void 0,m?void 0:h,m?void 0:v,y,b,g],x=n.apply(void 0,_);return r(t)&&o(x,_),x.placeholder=p,i(x,t,e)}},function(t,e,n){var r=n(177),o=n(6),i=r?function(t){return r.get(t)}:o;t.exports=i},function(t,e,n){var r=n(69),o=n(115);function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}i.prototype=r(o.prototype),i.prototype.constructor=i,t.exports=i},function(t,e,n){var r=n(176),o=n(185)(r);t.exports=o},function(t,e){var n=800,r=16,o=Date.now;t.exports=function(t){var e=0,i=0;return function(){var u=o(),a=r-(u-i);if(i=u,a>0){if(++e>=n)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(329),o=n(330),i=n(153),u=n(333);t.exports=function(t,e,n){var a=e+"";return i(t,o(a,u(r(a),n)))}},function(t,e,n){var r=n(24),o=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=o},function(t,e,n){var r=n(72),o=n(29);t.exports=function(t,e){return t&&r(e,o(e),t)}},function(t,e,n){var r=n(190),o=n(67),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var u=t[e];i.call(t,e)&&o(u,n)&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e,n){var r=n(187);t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},function(t,e,n){var r=n(94),o=n(116),i=n(189),u=n(188),a=n(338),c=n(341),s=n(70),f=n(342),l=n(343),p=n(160),d=n(344),h=n(43),v=n(345),y=n(346),b=n(351),g=n(5),m=n(58),_=n(352),x=n(17),w=n(354),O=n(29),j=1,E=2,S=4,P="[object Arguments]",A="[object Function]",k="[object GeneratorFunction]",T="[object Object]",R={};R[P]=R["[object Array]"]=R["[object ArrayBuffer]"]=R["[object DataView]"]=R["[object Boolean]"]=R["[object Date]"]=R["[object Float32Array]"]=R["[object Float64Array]"]=R["[object Int8Array]"]=R["[object Int16Array]"]=R["[object Int32Array]"]=R["[object Map]"]=R["[object Number]"]=R[T]=R["[object RegExp]"]=R["[object Set]"]=R["[object String]"]=R["[object Symbol]"]=R["[object Uint8Array]"]=R["[object Uint8ClampedArray]"]=R["[object Uint16Array]"]=R["[object Uint32Array]"]=!0,R["[object Error]"]=R[A]=R["[object WeakMap]"]=!1,t.exports=function t(e,n,C,I,M,L){var N,F=n&j,D=n&E,B=n&S;if(C&&(N=M?C(e,I,M,L):C(e)),void 0!==N)return N;if(!x(e))return e;var W=g(e);if(W){if(N=v(e),!F)return s(e,N)}else{var U=h(e),q=U==A||U==k;if(m(e))return c(e,F);if(U==T||U==P||q&&!M){if(N=D||q?{}:b(e),!F)return D?l(e,a(N,e)):f(e,u(N,e))}else{if(!R[U])return M?e:{};N=y(e,U,F)}}L||(L=new r);var z=L.get(e);if(z)return z;if(L.set(e,N),w(e))return e.forEach(function(r){N.add(t(r,n,C,r,e,L))}),N;if(_(e))return e.forEach(function(r,o){N.set(o,t(r,n,C,o,e,L))}),N;var G=B?D?d:p:D?keysIn:O,V=W?void 0:G(e);return o(V||e,function(r,o){V&&(r=e[o=r]),i(N,o,t(r,n,C,o,e,L))}),N}},function(t,e,n){var r=n(157),o=n(339),i=n(42);t.exports=function(t){return i(t)?r(t,!0):o(t)}},function(t,e,n){var r=n(95),o=n(117),i=n(105),u=n(159),a=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)r(e,i(t)),t=o(t);return e}:u;t.exports=a},function(t,e,n){var r=n(103),o=8;function i(t,e,n){var u=r(t,o,void 0,void 0,void 0,void 0,void 0,e=n?void 0:e);return u.placeholder=i.placeholder,u}i.placeholder={},t.exports=i},function(t,e,n){var r=n(274);t.exports=function(t){return null!=t&&t.length?r(t,1):[]}},function(t,e,n){"use strict";function r(t){var e,n=t.Symbol;return"function"==typeof n?n.observable?e=n.observable:(e=n("observable"),n.observable=e):e="@@observable",e}n.d(e,"a",function(){return r})},function(t,e,n){var r=n(313);t.exports=function(t){return t&&t.length?r(t):[]}},function(t,e,n){var r=n(316)("curry",n(194));r.placeholder=n(175),t.exports=r},function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(204));e.default=function(t,e,n){return e in t?(0,r.default)(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(t){return decodeURIComponent(t.replace(/\+/g," "))}e.stringify=function(t,e){e=e||"";var n=[];for(var o in"string"!=typeof e&&(e="?"),t)r.call(t,o)&&n.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return n.length?e+n.join("&"):""},e.parse=function(t){for(var e,n=/([^=?&]+)=?([^&]*)/g,r={};e=n.exec(t);r[o(e[1])]=o(e[2]));return r}},function(t,e,n){var r=n(367),o=n(155),i=n(156);t.exports=function(t,e,n){return e=o(e),void 0===n?(n=e,e=0):n=o(n),t=i(t),r(t,e,n)}},function(t,e,n){"use strict";t.exports=function(t,e,n,r,o,i,u,a){if(!t){var c;if(void 0===e)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,u,a],f=0;(c=new Error(e.replace(/%s/g,function(){return s[f++]}))).name="Invariant Violation"}throw c.framesToPop=1,c}}},function(t,e,n){"use strict";e.__esModule=!0;var r=u(n(374)),o=u(n(376)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function u(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},function(t,e,n){t.exports={default:n(365),__esModule:!0}},function(t,e){!function(t){"use strict";if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var n=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],r=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&n.indexOf(Object.prototype.toString.call(t))>-1};f.prototype.append=function(t,e){t=a(t),e=c(e);var n=this.map[t];this.map[t]=n?n+","+e:e},f.prototype.delete=function(t){delete this.map[a(t)]},f.prototype.get=function(t){return t=a(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(a(t))},f.prototype.set=function(t,e){this.map[a(t)]=c(e)},f.prototype.forEach=function(t,e){for(var n in this.map)this.map.hasOwnProperty(n)&&t.call(e,this.map[n],n,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,n){t.push(n)}),s(t)},f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),s(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,n){t.push([n,e])}),s(t)},e.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},v.call(y.prototype),v.call(g.prototype),g.prototype.clone=function(){return new g(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},g.error=function(){var t=new g(null,{status:0,statusText:""});return t.type="error",t};var u=[301,302,303,307,308];g.redirect=function(t,e){if(-1===u.indexOf(e))throw new RangeError("Invalid status code");return new g(null,{status:e,headers:{location:t}})},t.Headers=f,t.Request=y,t.Response=g,t.fetch=function(t,n){return new Promise(function(r,o){var i=new y(t,n),u=new XMLHttpRequest;u.onload=function(){var t={status:u.status,statusText:u.statusText,headers:function(t){var e=new f;return t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var n=t.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();e.append(r,o)}}),e}(u.getAllResponseHeaders()||"")};t.url="responseURL"in u?u.responseURL:t.headers.get("X-Request-URL");var e="response"in u?u.response:u.responseText;r(new g(e,t))},u.onerror=function(){o(new TypeError("Network request failed"))},u.ontimeout=function(){o(new TypeError("Network request failed"))},u.open(i.method,i.url,!0),"include"===i.credentials?u.withCredentials=!0:"omit"===i.credentials&&(u.withCredentials=!1),"responseType"in u&&e.blob&&(u.responseType="blob"),i.headers.forEach(function(t,e){u.setRequestHeader(e,t)}),u.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function a(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function c(t){return"string"!=typeof t&&(t=String(t)),t}function s(t){var n={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(n[Symbol.iterator]=function(){return n}),n}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function l(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function p(t){return new Promise(function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}})}function d(t){var e=new FileReader,n=p(e);return e.readAsArrayBuffer(t),n}function h(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function v(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&r(t))this._bodyArrayBuffer=h(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=h(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?l(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,n=p(e);return e.readAsText(t),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r<e.length;r++)n[r]=String.fromCharCode(e[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(b)}),this.json=function(){return this.text().then(JSON.parse)},this}function y(t,e){var n=(e=e||{}).body;if(t instanceof y){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,n||null==t._bodyInit||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=function(t){var e=t.toUpperCase();return i.indexOf(e)>-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(o))}}),e}function g(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}}("undefined"!=typeof self?self:this)},function(t,e,n){"use strict";function r(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var o=n(2),i=n(1),u=n.n(i),a=u.a.shape({trySubscribe:u.a.func.isRequired,tryUnsubscribe:u.a.func.isRequired,notifyNestedSubs:u.a.func.isRequired,isSubscribed:u.a.func.isRequired}),c=u.a.shape({subscribe:u.a.func.isRequired,dispatch:u.a.func.isRequired,getState:u.a.func.isRequired});!function(t){var e;void 0===t&&(t="store");var n=t+"Subscription",i=function(e){r(u,e);var i=u.prototype;function u(n,r){var o;return(o=e.call(this,n,r)||this)[t]=n.store,o}return i.getChildContext=function(){var e;return(e={})[t]=this[t],e[n]=null,e},i.render=function(){return o.Children.only(this.props.children)},u}(o.Component);i.propTypes={store:c.isRequired,children:u.a.element.isRequired},i.childContextTypes=((e={})[t]=c.isRequired,e[n]=a,e)}();function s(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(){return(f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function l(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}var p=n(372),d=n.n(p),h=n(202),v=n.n(h),y=n(300),b=null,g={notify:function(){}};var m=function(){function t(t,e,n){this.store=t,this.parentSub=e,this.onStateChange=n,this.unsubscribe=null,this.listeners=g}var e=t.prototype;return e.addNestedSub=function(t){return this.trySubscribe(),this.listeners.subscribe(t)},e.notifyNestedSubs=function(){this.listeners.notify()},e.isSubscribed=function(){return Boolean(this.unsubscribe)},e.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function(){var t=[],e=[];return{clear:function(){e=b,t=b},notify:function(){for(var n=t=e,r=0;r<n.length;r++)n[r]()},get:function(){return e},subscribe:function(n){var r=!0;return e===t&&(e=t.slice()),e.push(n),function(){r&&t!==b&&(r=!1,e===t&&(e=t.slice()),e.splice(e.indexOf(n),1))}}}}())},e.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=g)},t}(),_=0,x={};function w(){}function O(t,e){var n,i;void 0===e&&(e={});var u=e,p=u.getDisplayName,h=void 0===p?function(t){return"ConnectAdvanced("+t+")"}:p,b=u.methodName,g=void 0===b?"connectAdvanced":b,O=u.renderCountProp,j=void 0===O?void 0:O,E=u.shouldHandleStateChanges,S=void 0===E||E,P=u.storeKey,A=void 0===P?"store":P,k=u.withRef,T=void 0!==k&&k,R=l(u,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef"]),C=A+"Subscription",I=_++,M=((n={})[A]=c,n[C]=a,n),L=((i={})[C]=a,i);return function(e){v()(Object(y.isValidElementType)(e),"You must pass a component to the function returned by "+g+". Instead received "+JSON.stringify(e));var n=e.displayName||e.name||"Component",i=h(n),u=f({},R,{getDisplayName:h,methodName:g,renderCountProp:j,shouldHandleStateChanges:S,storeKey:A,withRef:T,displayName:i,wrappedComponentName:n,WrappedComponent:e}),a=function(n){function a(t,e){var r;return(r=n.call(this,t,e)||this).version=I,r.state={},r.renderCount=0,r.store=t[A]||e[A],r.propsMode=Boolean(t[A]),r.setWrappedInstance=r.setWrappedInstance.bind(s(s(r))),v()(r.store,'Could not find "'+A+'" in either the context or props of "'+i+'". Either wrap the root component in a <Provider>, or explicitly pass "'+A+'" as a prop to "'+i+'".'),r.initSelector(),r.initSubscription(),r}r(a,n);var c=a.prototype;return c.getChildContext=function(){var t,e=this.propsMode?null:this.subscription;return(t={})[C]=e||this.context[C],t},c.componentDidMount=function(){S&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},c.componentWillReceiveProps=function(t){this.selector.run(t)},c.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},c.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=w,this.store=null,this.selector.run=w,this.selector.shouldComponentUpdate=!1},c.getWrappedInstance=function(){return v()(T,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+g+"() call."),this.wrappedInstance},c.setWrappedInstance=function(t){this.wrappedInstance=t},c.initSelector=function(){var e=t(this.store.dispatch,u);this.selector=function(t,e){var n={run:function(r){try{var o=t(e.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(t){n.shouldComponentUpdate=!0,n.error=t}}};return n}(e,this.store),this.selector.run(this.props)},c.initSubscription=function(){if(S){var t=(this.propsMode?this.props:this.context)[C];this.subscription=new m(this.store,t,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},c.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(x)):this.notifyNestedSubs()},c.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},c.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},c.addExtraProps=function(t){if(!(T||j||this.propsMode&&this.subscription))return t;var e=f({},t);return T&&(e.ref=this.setWrappedInstance),j&&(e[j]=this.renderCount++),this.propsMode&&this.subscription&&(e[C]=this.subscription),e},c.render=function(){var t=this.selector;if(t.shouldComponentUpdate=!1,t.error)throw t.error;return Object(o.createElement)(e,this.addExtraProps(t.props))},a}(o.Component);return a.WrappedComponent=e,a.displayName=i,a.childContextTypes=L,a.contextTypes=M,a.propTypes=M,d()(a,e)}}var j=Object.prototype.hasOwnProperty;function E(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!=t&&e!=e}function S(t,e){if(E(t,e))return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return!1;var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!j.call(e,n[o])||!E(t[n[o]],e[n[o]]))return!1;return!0}var P=n(14);function A(t){return function(e,n){var r=t(e,n);function o(){return r}return o.dependsOnOwnProps=!1,o}}function k(t){return null!==t.dependsOnOwnProps&&void 0!==t.dependsOnOwnProps?Boolean(t.dependsOnOwnProps):1!==t.length}function T(t,e){return function(e,n){n.displayName;var r=function(t,e){return r.dependsOnOwnProps?r.mapToProps(t,e):r.mapToProps(t)};return r.dependsOnOwnProps=!0,r.mapToProps=function(e,n){r.mapToProps=t,r.dependsOnOwnProps=k(t);var o=r(e,n);return"function"==typeof o&&(r.mapToProps=o,r.dependsOnOwnProps=k(o),o=r(e,n)),o},r}}var R=[function(t){return"function"==typeof t?T(t):void 0},function(t){return t?void 0:A(function(t){return{dispatch:t}})},function(t){return t&&"object"==typeof t?A(function(e){return Object(P.bindActionCreators)(t,e)}):void 0}];var C=[function(t){return"function"==typeof t?T(t):void 0},function(t){return t?void 0:A(function(){return{}})}];function I(t,e,n){return f({},n,t,e)}var M=[function(t){return"function"==typeof t?function(t){return function(e,n){n.displayName;var r,o=n.pure,i=n.areMergedPropsEqual,u=!1;return function(e,n,a){var c=t(e,n,a);return u?o&&i(c,r)||(r=c):(u=!0,r=c),r}}}(t):void 0},function(t){return t?void 0:function(){return I}}];function L(t,e,n,r){return function(o,i){return n(t(o,i),e(r,i),i)}}function N(t,e,n,r,o){var i,u,a,c,s,f=o.areStatesEqual,l=o.areOwnPropsEqual,p=o.areStatePropsEqual,d=!1;function h(o,d){var h=!l(d,u),v=!f(o,i);return i=o,u=d,h&&v?(a=t(i,u),e.dependsOnOwnProps&&(c=e(r,u)),s=n(a,c,u)):h?(t.dependsOnOwnProps&&(a=t(i,u)),e.dependsOnOwnProps&&(c=e(r,u)),s=n(a,c,u)):v?function(){var e=t(i,u),r=!p(e,a);return a=e,r&&(s=n(a,c,u)),s}():s}return function(o,f){return d?h(o,f):function(o,f){return a=t(i=o,u=f),c=e(r,u),s=n(a,c,u),d=!0,s}(o,f)}}function F(t,e){var n=e.initMapStateToProps,r=e.initMapDispatchToProps,o=e.initMergeProps,i=l(e,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),u=n(t,i),a=r(t,i),c=o(t,i);return(i.pure?N:L)(u,a,c,t,i)}function D(t,e,n){for(var r=e.length-1;r>=0;r--){var o=e[r](t);if(o)return o}return function(e,r){throw new Error("Invalid value of type "+typeof t+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function B(t,e){return t===e}var W=function(t){var e=void 0===t?{}:t,n=e.connectHOC,r=void 0===n?O:n,o=e.mapStateToPropsFactories,i=void 0===o?C:o,u=e.mapDispatchToPropsFactories,a=void 0===u?R:u,c=e.mergePropsFactories,s=void 0===c?M:c,p=e.selectorFactory,d=void 0===p?F:p;return function(t,e,n,o){void 0===o&&(o={});var u=o,c=u.pure,p=void 0===c||c,h=u.areStatesEqual,v=void 0===h?B:h,y=u.areOwnPropsEqual,b=void 0===y?S:y,g=u.areStatePropsEqual,m=void 0===g?S:g,_=u.areMergedPropsEqual,x=void 0===_?S:_,w=l(u,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),O=D(t,i,"mapStateToProps"),j=D(e,a,"mapDispatchToProps"),E=D(n,s,"mergeProps");return r(d,f({methodName:"connect",getDisplayName:function(t){return"Connect("+t+")"},shouldHandleStateChanges:Boolean(t),initMapStateToProps:O,initMapDispatchToProps:j,initMergeProps:E,pure:p,areStatesEqual:v,areOwnPropsEqual:b,areStatePropsEqual:m,areMergedPropsEqual:x},w))}}();n.d(e,"a",function(){return W})},function(t,e,n){t.exports={default:n(208),__esModule:!0}},function(t,e,n){n(60),n(215),t.exports=n(9).Array.from},function(t,e,n){var r=n(76),o=n(77);t.exports=function(t){return function(e,n){var i,u,a=String(o(e)),c=r(n),s=a.length;return c<0||c>=s?t?"":void 0:(i=a.charCodeAt(c))<55296||i>56319||c+1===s||(u=a.charCodeAt(c+1))<56320||u>57343?t?a.charAt(c):i:t?a.slice(c,c+2):u-56320+(i-55296<<10)+65536}}},function(t,e,n){"use strict";var r=n(125),o=n(50),i=n(61),u={};n(28)(u,n(11)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(u,{next:o(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var r=n(21),o=n(16),i=n(65);t.exports=n(22)?Object.defineProperties:function(t,e){o(t);for(var n,u=i(e),a=u.length,c=0;a>c;)r.f(t,n=u[c++],e[n]);return t}},function(t,e,n){var r=n(44),o=n(79),i=n(213);t.exports=function(t){return function(e,n,u){var a,c=r(e),s=o(c.length),f=i(u,s);if(t&&n!=n){for(;s>f;)if((a=c[f++])!=a)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},function(t,e,n){var r=n(76),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(34),o=n(81),i=n(80)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,n){"use strict";var r=n(40),o=n(18),i=n(81),u=n(133),a=n(134),c=n(79),s=n(216),f=n(108);o(o.S+o.F*!n(135)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,l,p=i(t),d="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,y=void 0!==v,b=0,g=f(p);if(y&&(v=r(v,h>2?arguments[2]:void 0,2)),void 0==g||d==Array&&a(g))for(n=new d(e=c(p.length));e>b;b++)s(n,b,y?v(p[b],b):p[b]);else for(l=g.call(p),n=new d;!(o=l.next()).done;b++)s(n,b,y?u(l,v,[o.value,b],!0):o.value);return n.length=b,n}})},function(t,e,n){"use strict";var r=n(21),o=n(50);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},function(t,e,n){var r=n(218),o=n(54),i=n(83);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(219),o=n(226),i=n(227),u=n(228),a=n(229);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=i,c.prototype.has=u,c.prototype.set=a,t.exports=c},function(t,e,n){var r=n(53);t.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(t,e,n){var r=n(92),o=n(223),i=n(17),u=n(137),a=/^\[object .+?Constructor\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,p=RegExp("^"+f.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:a).test(u(t))}},function(t,e,n){var r=n(37),o=Object.prototype,i=o.hasOwnProperty,u=o.toString,a=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,a),n=t[a];try{t[a]=void 0;var r=!0}catch(t){}var o=u.call(t);return r&&(e?t[a]=n:delete t[a]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(224),o=function(){var t=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();t.exports=function(t){return!!o&&o in t}},function(t,e,n){var r=n(10)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},function(t,e,n){var r=n(53),o="__lodash_hash_undefined__",i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return n===o?void 0:n}return i.call(e,t)?e[t]:void 0}},function(t,e,n){var r=n(53),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:o.call(e,t)}},function(t,e,n){var r=n(53),o="__lodash_hash_undefined__";t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?o:e,this}},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(55),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0||(n==e.length-1?e.pop():o.call(e,n,1),--this.size,0))}},function(t,e,n){var r=n(55);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(55);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(55);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(56);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,n){var r=n(56);t.exports=function(t){return r(this,t).get(t)}},function(t,e,n){var r=n(56);t.exports=function(t){return r(this,t).has(t)}},function(t,e,n){var r=n(56);t.exports=function(t,e){var n=r(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this}},function(t,e){var n="__lodash_hash_undefined__";t.exports=function(t){return this.__data__.set(t,n),this}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e){t.exports=function(t){return t!=t}},function(t,e){t.exports=function(t,e,n){for(var r=n-1,o=t.length;++r<o;)if(t[r]===e)return r;return-1}},function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},function(t,e,n){var r=n(19),o=n(13),i="[object Arguments]";t.exports=function(t){return o(t)&&r(t)==i}},function(t,e){t.exports=function(){return!1}},function(t,e,n){var r=n(19),o=n(86),i=n(13),u={};u["[object Float32Array]"]=u["[object Float64Array]"]=u["[object Int8Array]"]=u["[object Int16Array]"]=u["[object Int32Array]"]=u["[object Uint8Array]"]=u["[object Uint8ClampedArray]"]=u["[object Uint16Array]"]=u["[object Uint32Array]"]=!0,u["[object Arguments]"]=u["[object Array]"]=u["[object ArrayBuffer]"]=u["[object Boolean]"]=u["[object DataView]"]=u["[object Date]"]=u["[object Error]"]=u["[object Function]"]=u["[object Map]"]=u["[object Number]"]=u["[object Object]"]=u["[object RegExp]"]=u["[object Set]"]=u["[object String]"]=u["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&o(t.length)&&!!u[r(t)]}},function(t,e,n){var r=n(158)(Object.keys,Object);t.exports=r},function(t,e,n){var r=n(54);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(54),o=n(83),i=n(82),u=200;t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<u-1)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,o=0,i=[];++n<r;){var u=t[n];e(u,n,t)&&(i[o++]=u)}return i}},function(t,e,n){var r=n(24)(n(10),"DataView");t.exports=r},function(t,e,n){var r=n(24)(n(10),"Promise");t.exports=r},function(t,e,n){var r=n(258),o=n(264),i=n(141);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(94),o=n(138),i=1,u=2;t.exports=function(t,e,n,a){var c=n.length,s=c,f=!a;if(null==t)return!s;for(t=Object(t);c--;){var l=n[c];if(f&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++c<s;){var p=(l=n[c])[0],d=t[p],h=l[1];if(f&&l[2]){if(void 0===d&&!(p in t))return!1}else{var v=new r;if(a)var y=a(d,h,p,t,e,v);if(!(void 0===y?o(h,d,i|u,a,v):y))return!1}}return!0}},function(t,e,n){var r=n(94),o=n(139),i=n(261),u=n(263),a=n(43),c=n(5),s=n(58),f=n(85),l=1,p="[object Arguments]",d="[object Array]",h="[object Object]",v=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,y,b,g){var m=c(t),_=c(e),x=m?d:a(t),w=_?d:a(e),O=(x=x==p?h:x)==h,j=(w=w==p?h:w)==h,E=x==w;if(E&&s(t)){if(!s(e))return!1;m=!0,O=!1}if(E&&!O)return g||(g=new r),m||f(t)?o(t,e,n,y,b,g):i(t,e,x,n,y,b,g);if(!(n&l)){var S=O&&v.call(t,"__wrapped__"),P=j&&v.call(e,"__wrapped__");if(S||P){var A=S?t.value():t,k=P?e.value():e;return g||(g=new r),b(A,k,n,y,g)}}return!!E&&(g||(g=new r),u(t,e,n,y,b,g))}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},function(t,e,n){var r=n(37),o=n(162),i=n(67),u=n(139),a=n(262),c=n(102),s=1,f=2,l="[object Boolean]",p="[object Date]",d="[object Error]",h="[object Map]",v="[object Number]",y="[object RegExp]",b="[object Set]",g="[object String]",m="[object Symbol]",_="[object ArrayBuffer]",x="[object DataView]",w=r?r.prototype:void 0,O=w?w.valueOf:void 0;t.exports=function(t,e,n,r,w,j,E){switch(n){case x:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case _:return!(t.byteLength!=e.byteLength||!j(new o(t),new o(e)));case l:case p:case v:return i(+t,+e);case d:return t.name==e.name&&t.message==e.message;case y:case g:return t==e+"";case h:var S=a;case b:var P=r&s;if(S||(S=c),t.size!=e.size&&!P)return!1;var A=E.get(t);if(A)return A==e;r|=f,E.set(t,e);var k=u(S(t),S(e),r,w,j,E);return E.delete(t),k;case m:if(O)return O.call(t)==O.call(e)}return!1}},function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}},function(t,e,n){var r=n(160),o=1,i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,u,a,c){var s=n&o,f=r(t),l=f.length;if(l!=r(e).length&&!s)return!1;for(var p=l;p--;){var d=f[p];if(!(s?d in e:i.call(e,d)))return!1}var h=c.get(t);if(h&&c.get(e))return h==e;var v=!0;c.set(t,e),c.set(e,t);for(var y=s;++p<l;){var b=t[d=f[p]],g=e[d];if(u)var m=s?u(g,b,d,e,t,c):u(b,g,d,t,e,c);if(!(void 0===m?b===g||a(b,g,n,u,c):m)){v=!1;break}y||(y="constructor"==d)}if(v&&!y){var _=t.constructor,x=e.constructor;_!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof _&&_ instanceof _&&"function"==typeof x&&x instanceof x)&&(v=!1)}return c.delete(t),c.delete(e),v}},function(t,e,n){var r=n(140),o=n(29);t.exports=function(t){for(var e=o(t),n=e.length;n--;){var i=e[n],u=t[i];e[n]=[i,u,r(u)]}return e}},function(t,e,n){var r=n(138),o=n(35),i=n(268),u=n(89),a=n(140),c=n(141),s=n(46),f=1,l=2;t.exports=function(t,e){return u(t)&&a(e)?c(s(t),e):function(n){var u=o(n,t);return void 0===u&&u===e?i(n,t):r(e,u,f|l)}}},function(t,e,n){var r=n(267),o=500;t.exports=function(t){var e=r(t,function(t){return n.size===o&&n.clear(),t}),n=e.cache;return e}},function(t,e,n){var r=n(82),o="Expected a function";function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError(o);var n=function(){var r=arguments,o=e?e.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var u=t.apply(this,r);return n.cache=i.set(o,u)||i,u};return n.cache=new(i.Cache||r),n}i.Cache=r,t.exports=i},function(t,e,n){var r=n(269),o=n(270);t.exports=function(t,e){return null!=t&&o(t,e,r)}},function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},function(t,e,n){var r=n(143),o=n(57),i=n(5),u=n(71),a=n(86),c=n(46);t.exports=function(t,e,n){for(var s=-1,f=(e=r(e,t)).length,l=!1;++s<f;){var p=c(e[s]);if(!(l=null!=t&&n(t,p)))break;t=t[p]}return l||++s!=f?l:!!(f=null==t?0:t.length)&&a(f)&&u(p,f)&&(i(t)||o(t))}},function(t,e,n){var r=n(272),o=n(273),i=n(89),u=n(46);t.exports=function(t){return i(t)?r(u(t)):o(t)}},function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},function(t,e,n){var r=n(142);t.exports=function(t){return function(e){return r(e,t)}}},function(t,e,n){var r=n(95),o=n(275);t.exports=function t(e,n,i,u,a){var c=-1,s=e.length;for(i||(i=o),a||(a=[]);++c<s;){var f=e[c];n>0&&i(f)?n>1?t(f,n-1,i,u,a):r(a,f):u||(a[a.length]=f)}return a}},function(t,e,n){var r=n(37),o=n(57),i=n(5),u=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(u&&t&&t[u])}},function(t,e,n){var r=n(113),o=Math.max;t.exports=function(t,e,n){return e=o(void 0===e?t.length-1:e,0),function(){for(var i=arguments,u=-1,a=o(i.length-e,0),c=Array(a);++u<a;)c[u]=i[e+u];u=-1;for(var s=Array(e+1);++u<e;)s[u]=i[u];return s[e]=n(c),r(t,this,s)}}},function(t,e,n){t.exports={default:n(278),__esModule:!0}},function(t,e,n){n(279),t.exports=n(9).Object.assign},function(t,e,n){var r=n(18);r(r.S+r.F,"Object",{assign:n(280)})},function(t,e,n){"use strict";var r=n(65),o=n(119),i=n(90),u=n(81),a=n(131),c=Object.assign;t.exports=!c||n(49)(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r})?function(t,e){for(var n=u(t),c=arguments.length,s=1,f=o.f,l=i.f;c>s;)for(var p,d=a(arguments[s++]),h=f?r(d).concat(f(d)):r(d),v=h.length,y=0;v>y;)l.call(d,p=h[y++])&&(n[p]=d[p]);return n}:c},function(t,e,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,i=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(282),o)r.regeneratorRuntime=i;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},function(t,e){!function(e){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},u=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",s="object"==typeof t,f=e.regeneratorRuntime;if(f)s&&(t.exports=f);else{(f=e.regeneratorRuntime=s?t.exports:{}).wrap=_;var l="suspendedStart",p="suspendedYield",d="executing",h="completed",v={},y={};y[u]=function(){return this};var b=Object.getPrototypeOf,g=b&&b(b(R([])));g&&g!==r&&o.call(g,u)&&(y=g);var m=j.prototype=w.prototype=Object.create(y);O.prototype=m.constructor=j,j.constructor=O,j[c]=O.displayName="GeneratorFunction",f.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===O||"GeneratorFunction"===(e.displayName||e.name))},f.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,j):(t.__proto__=j,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(m),t},f.awrap=function(t){return{__await:t}},E(S.prototype),S.prototype[a]=function(){return this},f.AsyncIterator=S,f.async=function(t,e,n,r){var o=new S(_(t,e,n,r));return f.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},E(m),m[c]="Generator",m[u]=function(){return this},m.toString=function(){return"[object Generator]"},f.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},f.values=R,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(k),!t)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,o){return a.type="throw",a.arg=t,e.next=r,o&&(e.method="next",e.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var u=this.tryEntries[i],a=u.completion;if("root"===u.tryLoc)return r("end");if(u.tryLoc<=this.prev){var c=o.call(u,"catchLoc"),s=o.call(u,"finallyLoc");if(c&&s){if(this.prev<u.catchLoc)return r(u.catchLoc,!0);if(this.prev<u.finallyLoc)return r(u.finallyLoc)}else if(c){if(this.prev<u.catchLoc)return r(u.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<u.finallyLoc)return r(u.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var u=i?i.completion:{};return u.type=t,u.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(u)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),k(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:R(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),v}}}function _(t,e,n,r){var o=e&&e.prototype instanceof w?e:w,i=Object.create(o.prototype),u=new T(r||[]);return i._invoke=function(t,e,n){var r=l;return function(o,i){if(r===d)throw new Error("Generator is already running");if(r===h){if("throw"===o)throw i;return C()}for(n.method=o,n.arg=i;;){var u=n.delegate;if(u){var a=P(u,n);if(a){if(a===v)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===l)throw r=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=d;var c=x(t,e,n);if("normal"===c.type){if(r=n.done?h:p,c.arg===v)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=h,n.method="throw",n.arg=c.arg)}}}(t,n,u),i}function x(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function w(){}function O(){}function j(){}function E(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function S(t){var e;this._invoke=function(n,r){function i(){return new Promise(function(e,i){!function e(n,r,i,u){var a=x(t[n],t,r);if("throw"!==a.type){var c=a.arg,s=c.value;return s&&"object"==typeof s&&o.call(s,"__await")?Promise.resolve(s.__await).then(function(t){e("next",t,i,u)},function(t){e("throw",t,i,u)}):Promise.resolve(s).then(function(t){c.value=t,i(c)},u)}u(a.arg)}(n,r,e,i)})}return e=e?e.then(i,i):i()}}function P(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,P(t,e),"throw"===e.method))return v;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var o=x(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,v;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,v):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,v)}function A(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(A,this),this.reset(!0)}function R(t){if(t){var e=t[u];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r<t.length;)if(o.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return i.next=i}}return{next:C}}function C(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},function(t,e,n){t.exports={default:n(284),__esModule:!0}},function(t,e,n){n(168),n(60),n(107),n(288),n(296),n(297),t.exports=n(9).Promise},function(t,e,n){"use strict";var r=n(286),o=n(287),i=n(41),u=n(44);t.exports=n(130)(Array,"Array",function(t,e){this._t=u(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r,o,i,u,a=n(48),c=n(8),s=n(40),f=n(109),l=n(18),p=n(23),d=n(52),h=n(289),v=n(290),y=n(144),b=n(145).set,g=n(292)(),m=n(91),_=n(146),x=n(293),w=n(147),O=c.TypeError,j=c.process,E=j&&j.versions,S=E&&E.v8||"",P=c.Promise,A="process"==f(j),k=function(){},T=o=m.f,R=!!function(){try{var t=P.resolve(1),e=(t.constructor={})[n(11)("species")]=function(t){t(k,k)};return(A||"function"==typeof PromiseRejectionEvent)&&t.then(k)instanceof e&&0!==S.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(t){}}(),C=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;g(function(){for(var r=t._v,o=1==t._s,i=0,u=function(e){var n,i,u,a=o?e.ok:e.fail,c=e.resolve,s=e.reject,f=e.domain;try{a?(o||(2==t._h&&N(t),t._h=1),!0===a?n=r:(f&&f.enter(),n=a(r),f&&(f.exit(),u=!0)),n===e.promise?s(O("Promise-chain cycle")):(i=C(n))?i.call(n,c,s):c(n)):s(r)}catch(t){f&&!u&&f.exit(),s(t)}};n.length>i;)u(n[i++]);t._c=[],t._n=!1,e&&!t._h&&M(t)})}},M=function(t){b.call(c,function(){var e,n,r,o=t._v,i=L(t);if(i&&(e=_(function(){A?j.emit("unhandledRejection",o,t):(n=c.onunhandledrejection)?n({promise:t,reason:o}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",o)}),t._h=A||L(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},L=function(t){return 1!==t._h&&0===(t._a||t._c).length},N=function(t){b.call(c,function(){var e;A?j.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})},F=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},D=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw O("Promise can't be resolved itself");(e=C(t))?g(function(){var r={_w:n,_d:!1};try{e.call(t,s(D,r,1),s(F,r,1))}catch(t){F.call(r,t)}}):(n._v=t,n._s=1,I(n,!1))}catch(t){F.call({_w:n,_d:!1},t)}}};R||(P=function(t){h(this,P,"Promise","_h"),d(t),r.call(this);try{t(s(D,this,1),s(F,this,1))}catch(t){F.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(294)(P.prototype,{then:function(t,e){var n=T(y(this,P));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=A?j.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=s(D,t,1),this.reject=s(F,t,1)},m.f=T=function(t){return t===P||t===u?new i(t):o(t)}),l(l.G+l.W+l.F*!R,{Promise:P}),n(61)(P,"Promise"),n(295)("Promise"),u=n(9).Promise,l(l.S+l.F*!R,"Promise",{reject:function(t){var e=T(this);return(0,e.reject)(t),e.promise}}),l(l.S+l.F*(a||!R),"Promise",{resolve:function(t){return w(a&&this===u?P:this,t)}}),l(l.S+l.F*!(R&&n(135)(function(t){P.all(t).catch(k)})),"Promise",{all:function(t){var e=this,n=T(e),r=n.resolve,o=n.reject,i=_(function(){var n=[],i=0,u=1;v(t,!1,function(t){var a=i++,c=!1;n.push(void 0),u++,e.resolve(t).then(function(t){c||(c=!0,n[a]=t,--u||r(n))},o)}),--u||r(n)});return i.e&&o(i.v),n.promise},race:function(t){var e=this,n=T(e),r=n.reject,o=_(function(){v(t,!1,function(t){e.resolve(t).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(40),o=n(133),i=n(134),u=n(16),a=n(79),c=n(108),s={},f={};(e=t.exports=function(t,e,n,l,p){var d,h,v,y,b=p?function(){return t}:c(t),g=r(n,l,e?2:1),m=0;if("function"!=typeof b)throw TypeError(t+" is not iterable!");if(i(b)){for(d=a(t.length);d>m;m++)if((y=e?g(u(h=t[m])[0],h[1]):g(t[m]))===s||y===f)return y}else for(v=b.call(t);!(h=v.next()).done;)if((y=o(v,g,h.value,e))===s||y===f)return y}).BREAK=s,e.RETURN=f},function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var r=n(8),o=n(145).set,i=r.MutationObserver||r.WebKitMutationObserver,u=r.process,a=r.Promise,c="process"==n(47)(u);t.exports=function(){var t,e,n,s=function(){var r,o;for(c&&(r=u.domain)&&r.exit();t;){o=t.fn,t=t.next;try{o()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(c)n=function(){u.nextTick(s)};else if(!i||r.navigator&&r.navigator.standalone)if(a&&a.resolve){var f=a.resolve(void 0);n=function(){f.then(s)}}else n=function(){o.call(r,s)};else{var l=!0,p=document.createTextNode("");new i(s).observe(p,{characterData:!0}),n=function(){p.data=l=!l}}return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},function(t,e,n){var r=n(8).navigator;t.exports=r&&r.userAgent||""},function(t,e,n){var r=n(28);t.exports=function(t,e,n){for(var o in e)n&&t[o]?t[o]=e[o]:r(t,o,e[o]);return t}},function(t,e,n){"use strict";var r=n(8),o=n(9),i=n(21),u=n(22),a=n(11)("species");t.exports=function(t){var e="function"==typeof o[t]?o[t]:r[t];u&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,n){"use strict";var r=n(18),o=n(9),i=n(8),u=n(144),a=n(147);r(r.P+r.R,"Promise",{finally:function(t){var e=u(this,o.Promise||i.Promise),n="function"==typeof t;return this.then(n?function(n){return a(e,t()).then(function(){return n})}:t,n?function(n){return a(e,t()).then(function(){throw n})}:t)}})},function(t,e,n){"use strict";var r=n(18),o=n(91),i=n(146);r(r.S,"Promise",{try:function(t){var e=o.f(this),n=i(t);return(n.e?e.reject:e.resolve)(n.v),e.promise}})},function(t,e,n){var r=n(166),o=n(101).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},,function(t,e,n){"use strict";t.exports=n(394)},function(t,e,n){"use strict";var r=n(14).compose;e.__esModule=!0,e.composeWithDevTools=function(){if(0!==arguments.length)return"object"==typeof arguments[0]?r:r.apply(null,arguments)},e.devToolsEnhancer=function(){return function(t){return t}}},function(t,e,n){"use strict";var r=n(402),o=n(403),i=Array.isArray;t.exports=function(t,e){if(t&&e){if(t.constructor===Object&&e.constructor===Object)return r(t,e);if(i(t)&&i(e))return o(t,e)}return t===e}},,function(t,e,n){var r=n(90),o=n(50),i=n(44),u=n(111),a=n(34),c=n(164),s=Object.getOwnPropertyDescriptor;e.f=n(22)?s:function(t,e){if(t=i(t),e=u(e,!0),c)try{return s(t,e)}catch(t){}if(a(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"wpRequest",function(){return Wt.default}),n.d(r,"request",function(){return Wt});n(373);var o=n(14),i=n(301),u=n(98);function a(t){return function(e){var n=e.dispatch,r=e.getState;return function(e){return function(o){return"function"==typeof o?o(n,r,t):e(o)}}}}var c=a();c.withExtraArgument=a;var s=c,f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p=function(t){return"@@redux-saga/"+t},d=p("TASK"),h=p("HELPER"),v=p("MATCH"),y=p("CANCEL_PROMISE"),b=p("SAGA_ACTION"),g=p("SELF_CANCELLATION"),m=function(t){return function(){return t}},_=m(!0),x=function(){},w=function(t){return t};function O(t,e,n){if(!e(t))throw L("error","uncaught at check",n),new Error(n)}var j=Object.prototype.hasOwnProperty;function E(t,e){return S.notUndef(t)&&j.call(t,e)}var S={undef:function(t){return null===t||void 0===t},notUndef:function(t){return null!==t&&void 0!==t},func:function(t){return"function"==typeof t},number:function(t){return"number"==typeof t},string:function(t){return"string"==typeof t},array:Array.isArray,object:function(t){return t&&!S.array(t)&&"object"===(void 0===t?"undefined":l(t))},promise:function(t){return t&&S.func(t.then)},iterator:function(t){return t&&S.func(t.next)&&S.func(t.throw)},iterable:function(t){return t&&S.func(Symbol)?S.func(t[Symbol.iterator]):S.array(t)},task:function(t){return t&&t[d]},observable:function(t){return t&&S.func(t.subscribe)},buffer:function(t){return t&&S.func(t.isEmpty)&&S.func(t.take)&&S.func(t.put)},pattern:function(t){return t&&(S.string(t)||"symbol"===(void 0===t?"undefined":l(t))||S.func(t)||S.array(t))},channel:function(t){return t&&S.func(t.take)&&S.func(t.close)},helper:function(t){return t&&t[h]},stringableFunc:function(t){return S.func(t)&&E(t,"toString")}},P={assign:function(t,e){for(var n in e)E(e,n)&&(t[n]=e[n])}};function A(t,e){var n=t.indexOf(e);n>=0&&t.splice(n,1)}var k={from:function(t){var e=Array(t.length);for(var n in t)E(t,n)&&(e[n]=t[n]);return e}};function T(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=f({},t),n=new Promise(function(t,n){e.resolve=t,e.reject=n});return e.promise=n,e}var R=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return function(){return++t}}(),C=function(t){throw t},I=function(t){return{value:t,done:!0}};function M(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:C,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments[3],o={name:n,next:t,throw:e,return:I};return r&&(o[h]=!0),"undefined"!=typeof Symbol&&(o[Symbol.iterator]=function(){return o}),o}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";"undefined"==typeof window?console.log("redux-saga "+t+": "+e+"\n"+(n&&n.stack||n)):console[t](e,n)}function N(t,e){return function(){return t.apply(void 0,arguments)}}var F=function(t,e){return t+" has been deprecated in favor of "+e+", please update your code"},D=function(t){return new Error("\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\n Error: "+t+"\n")},B=function(t,e){return(t?t+".":"")+"setContext(props): argument "+e+" is not a plain object"},W=function(t){return function(e){return t(Object.defineProperty(e,b,{value:!0}))}},U="Channel's Buffer overflow!",q=1,z=3,G=4,V={isEmpty:_,put:x,take:x};function $(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments[1],n=new Array(t),r=0,o=0,i=0,u=function(e){n[o]=e,o=(o+1)%t,r++},a=function(){if(0!=r){var e=n[i];return n[i]=null,r--,i=(i+1)%t,e}},c=function(){for(var t=[];r;)t.push(a());return t};return{isEmpty:function(){return 0==r},put:function(a){if(r<t)u(a);else{var s=void 0;switch(e){case q:throw new Error(U);case z:n[o]=a,i=o=(o+1)%t;break;case G:s=2*t,n=c(),r=n.length,o=n.length,i=0,n.length=s,t=s,u(a)}}},take:a,flush:c}}var K={none:function(){return V},fixed:function(t){return $(t,q)},dropping:function(t){return $(t,2)},sliding:function(t){return $(t,z)},expanding:function(t){return $(t,G)}},H=[],Y=0;function J(t){try{X(),t()}finally{Z()}}function Q(t){H.push(t),Y||(X(),tt())}function X(){Y++}function Z(){Y--}function tt(){Z();for(var t=void 0;!Y&&void 0!==(t=H.shift());)J(t)}var et=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},nt={type:"@@redux-saga/CHANNEL_END"},rt=function(t){return t&&"@@redux-saga/CHANNEL_END"===t.type};var ot="invalid buffer passed to channel factory function",it="Saga was provided with an undefined action";function ut(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:K.none(),n=arguments[2];arguments.length>2&&O(n,S.func,"Invalid match function passed to eventChannel");var r=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:K.fixed(),e=!1,n=[];function r(){if(e&&n.length)throw D("Cannot have a closed channel with pending takers");if(n.length&&!t.isEmpty())throw D("Cannot have pending takers with non empty buffer")}return O(t,S.buffer,ot),{take:function(o){r(),O(o,S.func,"channel.take's callback must be a function"),e&&t.isEmpty()?o(nt):t.isEmpty()?(n.push(o),o.cancel=function(){return A(n,o)}):o(t.take())},put:function(o){if(r(),O(o,S.notUndef,it),!e){if(!n.length)return t.put(o);for(var i=0;i<n.length;i++){var u=n[i];if(!u[v]||u[v](o))return n.splice(i,1),u(o)}}},flush:function(n){r(),O(n,S.func,"channel.flush' callback must be a function"),e&&t.isEmpty()?n(nt):n(t.flush())},close:function(){if(r(),!e&&(e=!0,n.length)){var t=n;n=[];for(var o=0,i=t.length;o<i;o++)t[o](nt)}},get __takers__(){return n},get __closed__(){return e}}}(e),o=function(){r.__closed__||(i&&i(),r.close())},i=t(function(t){rt(t)?o():n&&!n(t)||r.put(t)});if(r.__closed__&&i(),!S.func(i))throw new Error("in eventChannel: subscribe should return a function to unsubscribe");return{take:r.take,flush:r.flush,close:o}}var at=p("IO"),ct="TAKE",st="PUT",ft="ALL",lt="RACE",pt="CALL",dt="CPS",ht="FORK",vt="JOIN",yt="CANCEL",bt="SELECT",gt="ACTION_CHANNEL",mt="CANCELLED",_t="FLUSH",xt="GET_CONTEXT",wt="SET_CONTEXT",Ot=function(t,e){var n;return(n={})[at]=!0,n[t]=e,n};function jt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"*";if(arguments.length&&O(arguments[0],S.notUndef,"take(patternOrChannel): patternOrChannel is undefined"),S.pattern(t))return Ot(ct,{pattern:t});if(S.channel(t))return Ot(ct,{channel:t});throw new Error("take(patternOrChannel): argument "+String(t)+" is not valid channel or a valid pattern")}jt.maybe=function(){var t=jt.apply(void 0,arguments);return t[ct].maybe=!0,t};jt.maybe;function Et(t,e){return arguments.length>1?(O(t,S.notUndef,"put(channel, action): argument channel is undefined"),O(t,S.channel,"put(channel, action): argument "+t+" is not a valid channel"),O(e,S.notUndef,"put(channel, action): argument action is undefined")):(O(t,S.notUndef,"put(action): argument action is undefined"),e=t,t=null),Ot(st,{channel:t,action:e})}Et.resolve=function(){var t=Et.apply(void 0,arguments);return t[st].resolve=!0,t},Et.sync=N(Et.resolve);var St=function(t){return function(e){return e&&e[at]&&e[t]}},Pt={take:St(ct),put:St(st),all:St(ft),race:St(lt),call:St(pt),cps:St(dt),fork:St(ht),join:St(vt),cancel:St(yt),select:St(bt),actionChannel:St(gt),cancelled:St(mt),flush:St(_t),getContext:St(xt),setContext:St(wt)},At=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},kt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};var Tt="proc first argument (Saga function result) must be an iterator",Rt={toString:function(){return"@@redux-saga/CHANNEL_END"}},Ct={toString:function(){return"@@redux-saga/TASK_CANCEL"}},It={wildcard:function(){return _},default:function(t){return"symbol"===(void 0===t?"undefined":kt(t))?function(e){return e.type===t}:function(e){return e.type===String(t)}},array:function(t){return function(e){return t.some(function(t){return Mt(t)(e)})}},predicate:function(t){return function(e){return t(e)}}};function Mt(t){return("*"===t?It.wildcard:S.array(t)?It.array:S.stringableFunc(t)?It.default:S.func(t)?It.predicate:It.default)(t)}var Lt=function(t){return{fn:t}};function Nt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return x},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:x,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:x,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},u=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"anonymous",c=arguments[8];O(t,S.iterator,Tt);var s=N(V,F("[...effects]","all([...effects])")),f=i.sagaMonitor,l=i.logger,p=i.onError,h=l||L,m=function(t){var e=t.sagaStack;!e&&t.stack&&(e=-1!==t.stack.split("\n")[0].indexOf(t.message)?t.stack:"Error: "+t.message+"\n"+t.stack),h("error","uncaught at "+a,e||t.message||t)},_=function(t){var e=ut(function(e){return t(function(t){t[b]?e(t):Q(function(){return e(t)})})});return et({},e,{take:function(t,n){arguments.length>1&&(O(n,S.func,"channel.take's matcher argument must be a function"),t[v]=n),e.take(t)}})}(e),w=Object.create(o);D.cancel=x;var j=function(t,e,n,r){var o,i;return n._deferredEnd=null,(o={})[d]=!0,o.id=t,o.name=e,"done",(i={}).done=i.done||{},i.done.get=function(){if(n._deferredEnd)return n._deferredEnd.promise;var t=T();return n._deferredEnd=t,n._isRunning||(n._error?t.reject(n._error):t.resolve(n._result)),t.promise},o.cont=r,o.joiners=[],o.cancel=I,o.isRunning=function(){return n._isRunning},o.isCancelled=function(){return n._isCancelled},o.isAborted=function(){return n._isAborted},o.result=function(){return n._result},o.error=function(){return n._error},o.setContext=function(t){O(t,S.object,B("task",t)),P.assign(w,t)},function(t,e){for(var n in e){var r=e[n];r.configurable=r.enumerable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n,r)}}(o,i),o}(u,a,t,c),E={name:a,cancel:function(){E.isRunning&&!E.isCancelled&&(E.isCancelled=!0,D(Ct))},isRunning:!0},C=function(t,e,n){var r=[],o=void 0,i=!1;function u(t){c(),n(t,!0)}function a(t){r.push(t),t.cont=function(a,c){i||(A(r,t),t.cont=x,c?u(a):(t===e&&(o=a),r.length||(i=!0,n(o))))}}function c(){i||(i=!0,r.forEach(function(t){t.cont=x,t.cancel()}),r=[])}return a(e),{addTask:a,cancelAll:c,abort:u,getTasks:function(){return r},taskNames:function(){return r.map(function(t){return t.name})}}}(0,E,W);function I(){t._isRunning&&!t._isCancelled&&(t._isCancelled=!0,C.cancelAll(),W(Ct))}return c&&(c.cancel=I),t._isRunning=!0,D(),j;function D(e,n){if(!E.isRunning)throw new Error("Trying to resume an already finished generator");try{var r=void 0;n?r=t.throw(e):e===Ct?(E.isCancelled=!0,D.cancel(),r=S.func(t.return)?t.return(Ct):{done:!0,value:Ct}):r=e===Rt?S.func(t.return)?t.return():{done:!0}:t.next(e),r.done?(E.isMainRunning=!1,E.cont&&E.cont(r.value)):U(r.value,u,"",D)}catch(t){E.isCancelled&&m(t),E.isMainRunning=!1,E.cont(t,!0)}}function W(e,n){t._isRunning=!1,_.close(),n?(e instanceof Error&&Object.defineProperty(e,"sagaStack",{value:"at "+a+" \n "+(e.sagaStack||e.stack),configurable:!0}),j.cont||(e instanceof Error&&p?p(e):m(e)),t._error=e,t._isAborted=!0,t._deferredEnd&&t._deferredEnd.reject(e)):(t._result=e,t._deferredEnd&&t._deferredEnd.resolve(e)),j.cont&&j.cont(e,n),j.joiners.forEach(function(t){return t.cb(e,n)}),j.joiners=null}function U(t,o){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",u=arguments[3],c=R();f&&f.effectTriggered({effectId:c,parentEffectId:o,label:i,effect:t});var l=void 0;function p(t,e){l||(l=!0,u.cancel=x,f&&(e?f.effectRejected(c,t):f.effectResolved(c,t)),u(t,e))}p.cancel=x,u.cancel=function(){if(!l){l=!0;try{p.cancel()}catch(t){m(t)}p.cancel=x,f&&f.effectCancelled(c)}};var d=void 0;return S.promise(t)?q(t,p):S.helper(t)?G(Lt(t),c,p):S.iterator(t)?z(t,c,a,p):S.array(t)?s(t,c,p):(d=Pt.take(t))?function(t,e){var n=t.channel,r=t.pattern,o=t.maybe;n=n||_;var i=function(t){return t instanceof Error?e(t,!0):rt(t)&&!o?e(Rt):e(t)};try{n.take(i,Mt(r))}catch(t){return e(t,!0)}e.cancel=i.cancel}(d,p):(d=Pt.put(t))?function(t,e){var r=t.channel,o=t.action,i=t.resolve;Q(function(){var t=void 0;try{t=(r?r.put:n)(o)}catch(t){if(r||i)return e(t,!0);m(t)}if(!i||!S.promise(t))return e(t);q(t,e)})}(d,p):(d=Pt.all(t))?V(d,c,p):(d=Pt.race(t))?function(t,e,n){var r=void 0,o=Object.keys(t),i={};o.forEach(function(e){var u=function(i,u){if(!r)if(u)n.cancel(),n(i,!0);else if(!rt(i)&&i!==Rt&&i!==Ct){var a;n.cancel(),r=!0;var c=((a={})[e]=i,a);n(S.array(t)?[]
1
+ var tribe="object"==typeof tribe?tribe:{};tribe.common=tribe.common||{},tribe.common.components=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=546)}([,function(t,e,n){t.exports=n(310)()},function(t,e){t.exports=React},function(t,e,n){"use strict";e.__esModule=!0;var r,o=n(277),i=(r=o)&&r.__esModule?r:{default:r};e.default=i.default||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}},,function(t,e){var n=Array.isArray;t.exports=n},function(t,e){t.exports=function(){}},,function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(136),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e,n){var r=n(100)("wks"),o=n(66),i=n(8).Symbol,u="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=r},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r="@@MT/COMMON"},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){"use strict";n.r(e),n.d(e,"createStore",function(){return a}),n.d(e,"combineReducers",function(){return s}),n.d(e,"bindActionCreators",function(){return l}),n.d(e,"applyMiddleware",function(){return h}),n.d(e,"compose",function(){return d}),n.d(e,"__DO_NOT_USE__ActionTypes",function(){return i});var r=n(122),o=function(){return Math.random().toString(36).substring(7).split("").join(".")},i={INIT:"@@redux/INIT"+o(),REPLACE:"@@redux/REPLACE"+o(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+o()}};function u(t){if("object"!=typeof t||null===t)return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function a(t,e,n){var o;if("function"==typeof e&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function");if("function"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(a)(t,e)}if("function"!=typeof t)throw new Error("Expected the reducer to be a function.");var c=t,s=e,f=[],l=f,p=!1;function d(){l===f&&(l=f.slice())}function h(){if(p)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return s}function v(t){if("function"!=typeof t)throw new Error("Expected the listener to be a function.");if(p)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var e=!0;return d(),l.push(t),function(){if(e){if(p)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");e=!1,d();var n=l.indexOf(t);l.splice(n,1)}}}function y(t){if(!u(t))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===t.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(p)throw new Error("Reducers may not dispatch actions.");try{p=!0,s=c(s,t)}finally{p=!1}for(var e=f=l,n=0;n<e.length;n++){(0,e[n])()}return t}return y({type:i.INIT}),(o={dispatch:y,subscribe:v,getState:h,replaceReducer:function(t){if("function"!=typeof t)throw new Error("Expected the nextReducer to be a function.");c=t,y({type:i.REPLACE})}})[r.a]=function(){var t,e=v;return(t={subscribe:function(t){if("object"!=typeof t||null===t)throw new TypeError("Expected the observer to be an object.");function n(){t.next&&t.next(h())}return n(),{unsubscribe:e(n)}}})[r.a]=function(){return this},t},o}function c(t,e){var n=e&&e.type;return"Given "+(n&&'action "'+String(n)+'"'||"an action")+', reducer "'+t+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function s(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var o=e[r];0,"function"==typeof t[o]&&(n[o]=t[o])}var u,a=Object.keys(n);try{!function(t){Object.keys(t).forEach(function(e){var n=t[e];if(void 0===n(void 0,{type:i.INIT}))throw new Error('Reducer "'+e+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===n(void 0,{type:i.PROBE_UNKNOWN_ACTION()}))throw new Error('Reducer "'+e+"\" returned undefined when probed with a random type. Don't try to handle "+i.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(n)}catch(t){u=t}return function(t,e){if(void 0===t&&(t={}),u)throw u;for(var r=!1,o={},i=0;i<a.length;i++){var s=a[i],f=n[s],l=t[s],p=f(l,e);if(void 0===p){var d=c(s,e);throw new Error(d)}o[s]=p,r=r||p!==l}return r?o:t}}function f(t,e){return function(){return e(t.apply(this,arguments))}}function l(t,e){if("function"==typeof t)return f(t,e);if("object"!=typeof t||null===t)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===t?"null":typeof t)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var n=Object.keys(t),r={},o=0;o<n.length;o++){var i=n[o],u=t[i];"function"==typeof u&&(r[i]=f(u,e))}return r}function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function d(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return 0===e.length?function(t){return t}:1===e.length?e[0]:e.reduce(function(t,e){return function(){return t(e.apply(void 0,arguments))}})}function h(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return function(){var n=t.apply(void 0,arguments),r=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},o={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},i=e.map(function(t){return t(o)});return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),r.forEach(function(e){p(t,e,n[e])})}return t}({},n,{dispatch:r=d.apply(void 0,i)(n.dispatch)})}}}},function(t,e,n){var r;
2
  /*!
3
  Copyright (c) 2017 Jed Watson.
4
  Licensed under the MIT License (MIT), see
9
  Licensed under the MIT License (MIT), see
10
  http://jedwatson.github.io/classnames
11
  */