@mdn/fred 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/render.js +5 -2
  3. package/components/baseline-indicator/server.js +3 -3
  4. package/components/compat-table/constants.js +0 -3
  5. package/components/compat-table/element.js +3 -6
  6. package/components/content-feedback/element.js +2 -5
  7. package/components/content-section/server.css +1 -1
  8. package/components/contributor-list/element.css +3 -2
  9. package/components/interactive-example/element.js +1 -1
  10. package/components/menu/constants.js +6 -4
  11. package/components/menu/server.js +142 -89
  12. package/components/placement-bottom/element.js +2 -2
  13. package/components/placement-hp-main/element.js +2 -2
  14. package/components/placement-no/element.js +1 -1
  15. package/components/placement-note/element.js +1 -1
  16. package/components/placement-sidebar/element.js +4 -4
  17. package/components/placement-top/element.js +5 -5
  18. package/components/play-controller/element.js +1 -0
  19. package/components/playground/element.js +2 -1
  20. package/components/recent-contributions/server.js +1 -1
  21. package/components/scrim-inline/element.js +2 -2
  22. package/l10n/en-US.ftl +5 -2
  23. package/out/service-worker.js +1 -1
  24. package/out/service-worker.js.map +1 -1
  25. package/out/static/client/{2308.69b80ae939b202ae.js → 2308.0ccf49974d71523d.js} +6 -6
  26. package/out/static/client/2308.0ccf49974d71523d.js.map +1 -0
  27. package/out/static/client/{2319.daf8150c3dd00fb4.js → 2319.0a40303319ac6a6e.js} +4 -4
  28. package/out/static/client/{2319.daf8150c3dd00fb4.js.map → 2319.0a40303319ac6a6e.js.map} +1 -1
  29. package/out/static/client/{288.ba983e8acda3116e.js → 288.684edb44f92a470c.js} +2 -2
  30. package/out/static/client/288.684edb44f92a470c.js.map +1 -0
  31. package/out/static/client/{3132.ec59f4619872c415.js → 3132.5ae6f61e3998aef1.js} +6 -6
  32. package/out/static/client/{3132.ec59f4619872c415.js.map → 3132.5ae6f61e3998aef1.js.map} +1 -1
  33. package/out/static/client/{3733.60667669ab613e1f.js → 3733.94bd76664194890b.js} +5 -5
  34. package/out/static/client/{3733.60667669ab613e1f.js.map → 3733.94bd76664194890b.js.map} +1 -1
  35. package/out/static/client/{451.cd85e2808f388a00.js → 451.fb2679190b3266e1.js} +2 -2
  36. package/out/static/client/{451.cd85e2808f388a00.js.map → 451.fb2679190b3266e1.js.map} +1 -1
  37. package/out/static/client/{603.8cdd963a9e248a75.js → 603.8670965b0722be3a.js} +5 -5
  38. package/out/static/client/603.8670965b0722be3a.js.map +1 -0
  39. package/out/static/client/{6040.80c6f96d0152ac99.js → 6040.13e672aff6757a47.js} +2 -2
  40. package/out/static/client/{6040.80c6f96d0152ac99.js.map → 6040.13e672aff6757a47.js.map} +1 -1
  41. package/out/static/client/{6536.faff8f026d145aad.js → 6536.ecdcc4458cbd0504.js} +2 -2
  42. package/out/static/client/6536.ecdcc4458cbd0504.js.map +1 -0
  43. package/out/static/client/{8036.9065b84aac240378.js → 8036.6e177b49bfa9b7c4.js} +3 -3
  44. package/out/static/client/{8036.9065b84aac240378.js.map → 8036.6e177b49bfa9b7c4.js.map} +1 -1
  45. package/out/static/client/{8607.266d488ae06c2279.js → 8607.464a88660a040f97.js} +4 -4
  46. package/out/static/client/{8607.266d488ae06c2279.js.map → 8607.464a88660a040f97.js.map} +1 -1
  47. package/out/static/client/{8797.46790b4359b5d1cb.js → 8797.f5880b5ee2659039.js} +2 -2
  48. package/out/static/client/{8797.46790b4359b5d1cb.js.map → 8797.f5880b5ee2659039.js.map} +1 -1
  49. package/out/static/client/{9784.214845ec6d3b77e3.js → 9784.3f8ca449f7d36818.js} +5 -5
  50. package/out/static/client/9784.3f8ca449f7d36818.js.map +1 -0
  51. package/out/static/client/{index.b9d9ebb034538241.js → index.881056601848b5c3.js} +15 -12
  52. package/out/static/client/{index.b9d9ebb034538241.js.map → index.881056601848b5c3.js.map} +1 -1
  53. package/out/static/client/{runtime.cc9114c9e108157f.js → runtime.63305f0549b94aae.js} +2 -2
  54. package/out/static/client/{runtime.cc9114c9e108157f.js.map → runtime.63305f0549b94aae.js.map} +1 -1
  55. package/out/static/client/stats.json +136 -136
  56. package/out/static/client/{styles-content-section.e0bbadd0c4bc857d.css → styles-content-section.2f0727a030110fc9.css} +2 -2
  57. package/out/static/client/{styles-content-section.e0bbadd0c4bc857d.css.map → styles-content-section.2f0727a030110fc9.css.map} +1 -1
  58. package/out/static/legacy/{1289.71de08e7375881e1.js → 1289.61e3f0658b3b42f6.js} +2 -2
  59. package/out/static/legacy/{1289.71de08e7375881e1.js.map → 1289.61e3f0658b3b42f6.js.map} +1 -1
  60. package/out/static/legacy/{2090.29b77e88722868ff.js → 2090.5996133ea26ddd0a.js} +2 -2
  61. package/out/static/legacy/{2090.29b77e88722868ff.js.map → 2090.5996133ea26ddd0a.js.map} +1 -1
  62. package/out/static/legacy/2235.b99812e73c08ee51.js +2 -0
  63. package/out/static/legacy/{2235.c0e6904b64ea18fe.js.map → 2235.b99812e73c08ee51.js.map} +1 -1
  64. package/out/static/legacy/{2465.676e7f0b0f9f9d85.js → 2465.041a63f06f35163c.js} +2 -2
  65. package/out/static/legacy/{2465.676e7f0b0f9f9d85.js.map → 2465.041a63f06f35163c.js.map} +1 -1
  66. package/out/static/legacy/{3172.0c1b9258951929cc.js → 3172.cf1b8a6dcea5d789.js} +2 -2
  67. package/out/static/legacy/{3172.0c1b9258951929cc.js.map → 3172.cf1b8a6dcea5d789.js.map} +1 -1
  68. package/out/static/legacy/{4968.62ad4db7389e93ad.js → 4968.e73f2795a9ca1639.js} +2 -2
  69. package/out/static/legacy/{4968.62ad4db7389e93ad.js.map → 4968.e73f2795a9ca1639.js.map} +1 -1
  70. package/out/static/legacy/{6364.d8cdb19b92fe6dc1.js → 6364.4c2629a5287ded91.js} +2 -2
  71. package/out/static/legacy/{6364.d8cdb19b92fe6dc1.js.map → 6364.4c2629a5287ded91.js.map} +1 -1
  72. package/out/static/legacy/{652.3c82fa8fa13a87b2.js → 652.d7ab50c73c693880.js} +2 -2
  73. package/out/static/legacy/{652.3c82fa8fa13a87b2.js.map → 652.d7ab50c73c693880.js.map} +1 -1
  74. package/out/static/legacy/7510.faa07a788cad6fc7.js +2 -0
  75. package/out/static/legacy/{7510.d1e3773463ecc314.js.map → 7510.faa07a788cad6fc7.js.map} +1 -1
  76. package/out/static/legacy/{7827.838d9e673c56e936.js → 7827.efd03057dbb6c884.js} +2 -2
  77. package/out/static/legacy/{7827.838d9e673c56e936.js.map → 7827.efd03057dbb6c884.js.map} +1 -1
  78. package/out/static/legacy/8183.26862a110c641391.js +2 -0
  79. package/out/static/legacy/8183.26862a110c641391.js.map +1 -0
  80. package/out/static/legacy/{8333.c00c132d6919165b.js → 8333.e5001734aea048b6.js} +2 -2
  81. package/out/static/legacy/{8333.c00c132d6919165b.js.map → 8333.e5001734aea048b6.js.map} +1 -1
  82. package/out/static/legacy/{8504.157e4a48938fdac7.js → 8504.d5df18204dd2b2ef.js} +2 -2
  83. package/out/static/legacy/{8504.157e4a48938fdac7.js.map → 8504.d5df18204dd2b2ef.js.map} +1 -1
  84. package/out/static/legacy/8856.0efcde0ace698d4a.js.map +1 -1
  85. package/out/static/legacy/{9221.64e46eedebf47df8.js → 9221.3cee7be6339f4234.js} +3 -3
  86. package/out/static/legacy/{9221.64e46eedebf47df8.js.map → 9221.3cee7be6339f4234.js.map} +1 -1
  87. package/out/static/legacy/asset-manifest.json +20 -20
  88. package/out/static/legacy/{index.e4ab469094607d20.html → index.17917fe951b4bbfe.html} +1 -1
  89. package/out/static/legacy/index.81f776c8a95b5c6c.js +6 -0
  90. package/out/static/legacy/{index.3504df1c7b6a1b29.js.LICENSE.txt → index.81f776c8a95b5c6c.js.LICENSE.txt} +1 -1
  91. package/out/static/legacy/index.81f776c8a95b5c6c.js.map +1 -0
  92. package/out/static/legacy/stats.json +20 -20
  93. package/out/static/legacy/yari.255b3bc6ef8a8b24.js +7 -0
  94. package/out/static/legacy/{yari.7a85003b4add8414.js.LICENSE.txt → yari.255b3bc6ef8a8b24.js.LICENSE.txt} +1 -1
  95. package/out/static/legacy/yari.255b3bc6ef8a8b24.js.map +1 -0
  96. package/out/static/ssr/index.js +153 -161
  97. package/out/static/ssr/index.js.map +1 -1
  98. package/out/static/ssr/stats.json +4 -4
  99. package/package.json +14 -14
  100. package/utils/glean.js +3 -8
  101. package/out/static/client/2308.69b80ae939b202ae.js.map +0 -1
  102. package/out/static/client/288.ba983e8acda3116e.js.map +0 -1
  103. package/out/static/client/603.8cdd963a9e248a75.js.map +0 -1
  104. package/out/static/client/6536.faff8f026d145aad.js.map +0 -1
  105. package/out/static/client/9784.214845ec6d3b77e3.js.map +0 -1
  106. package/out/static/legacy/2235.c0e6904b64ea18fe.js +0 -2
  107. package/out/static/legacy/7510.d1e3773463ecc314.js +0 -2
  108. package/out/static/legacy/8183.d3c84d03c477eac6.js +0 -2
  109. package/out/static/legacy/8183.d3c84d03c477eac6.js.map +0 -1
  110. package/out/static/legacy/index.3504df1c7b6a1b29.js +0 -6
  111. package/out/static/legacy/index.3504df1c7b6a1b29.js.map +0 -1
  112. package/out/static/legacy/yari.7a85003b4add8414.js +0 -7
  113. package/out/static/legacy/yari.7a85003b4add8414.js.map +0 -1
  114. /package/out/static/client/{2319.daf8150c3dd00fb4.js.LICENSE.txt → 2319.0a40303319ac6a6e.js.LICENSE.txt} +0 -0
  115. /package/out/static/client/{603.8cdd963a9e248a75.js.LICENSE.txt → 603.8670965b0722be3a.js.LICENSE.txt} +0 -0
  116. /package/out/static/client/{9784.214845ec6d3b77e3.js.LICENSE.txt → 9784.3f8ca449f7d36818.js.LICENSE.txt} +0 -0
  117. /package/out/static/client/{index.b9d9ebb034538241.js.LICENSE.txt → index.881056601848b5c3.js.LICENSE.txt} +0 -0
  118. /package/out/static/legacy/{9221.64e46eedebf47df8.js.LICENSE.txt → 9221.3cee7be6339f4234.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- export const __webpack_id__="7827";export const __webpack_ids__=["7827"];export const __webpack_modules__={27902:function(e,t,n){n.r(t),n.d(t,{default:()=>Q});var r=n(16563),a=n(18761),o=n(40967),l=n(23425),i=n(28166),c=n(76793),u=n(65318),s=n(78935),f=n(8574),m=n(44806),d=n(5592),p=n(45571),y=n(60274);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t,n,r,a,o,l){try{var i=e[o](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,a)}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||g(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b(e,t)}}n(85521);var E=n(3053),w=n(47263),S=n(96540),k=function(e){var t=e.name,n=e.isDisabled,r=void 0!==n&&n,a=e.onBlurHandler,o=e.onChangeHandler,l=e.onClickHandler,i=e.onFocusHandler,c=e.onResetHandler,u=e.placeholder,s=e.value;return S.createElement("div",{className:"search-form search-widget"},S.createElement("input",{type:"search",className:"search-input-field",name:t,placeholder:u,value:s,disabled:r,onBlur:function(e){var t;return a&&!(null==(t=e.currentTarget.parentElement)?void 0:t.contains(e.relatedTarget))&&a(e)},onFocus:i,onChange:o,onClick:l}),c&&S.createElement("button",{type:"button",className:"button action has-icon clear-search-button",onClick:c},S.createElement("span",{className:"button-wrap"},S.createElement("span",{className:"icon icon-cancel"}),S.createElement("span",{className:"visually-hidden"},"Clear search input"))),S.createElement("button",{type:"submit",disabled:r,className:"button action has-icon search-button search-filter-button"},S.createElement("span",{className:"button-wrap"},S.createElement("span",{className:"icon icon-search"}),S.createElement("span",{className:"visually-hidden"},"Search"))))},O=n(17428),j=n(29558);function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||P(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e){return function(e){if(Array.isArray(e))return A(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||P(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t){if(e){if("string"==typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return A(e,t)}}function _(e){var t=e.isDisabled,n=void 0!==t&&t,r=e.filters,a=void 0===r?[]:r,o=e.sorts,l=void 0===o?[]:o,c=e.onChange,u=void 0===c?function(e,t,n){}:c,s=C((0,y.ok)(),2),f=s[0],m=s[1],d=C((0,S.useState)(null),2),b=d[0],v=d[1],h=C((0,S.useState)(!1),2),g=h[0],E=h[1],w=C((0,S.useState)(""),2),A=w[0],P=w[1];(0,S.useEffect)(function(){var e;return P(null!=(e=f.get("q"))?e:"")},[f]);var _=function(e,t){m(function(n){var r=n.get(e);return t?n.set(e,t):n.delete(e),u(e,t,r),n.delete("page"),new URLSearchParams(x(n.entries()).sort(function(e,t){var n=C(e,1)[0],r=C(t,1)[0];return n.localeCompare(r)}))})},I=function(e,t){var n,r=a.find(function(t){return t.key===e}).options.find(function(e){return e.value===t});return null!=(n=null==r?void 0:r.isDefault)&&n},N=function(e,t){var n,r=null!=(n=f.get(e))?n:null,o=a.find(function(t){return t.key===e});return o.multiple?("string"==typeof r?o.multiple.decode(r):[]).includes(t):r?r===t:I(e,t)},D=function(e){var t,n=l.find(function(t){return t.param===e});return null!=(t=null==n?void 0:n.isDefault)&&t},T=function(e){var t,n=C(e.split("=",2),2),r=n[0],a=n[1],o=null!=(t=f.get(r))?t:null;return o?o===a:D(e)},H=function(e,t){var n=null!=(o=f.get(e))?o:null,r=a.find(function(t){return t.key===e});if(r.multiple){var o,l,i,c="string"==typeof n?r.multiple.decode(n):[];l=(c=c.includes(t)?c.filter(function(e){return e!==t}):x(c).concat([t]).sort()).length?(i=r.multiple).encode.apply(i,x(c)):null}else l=I(e,t)?null:n!==t?t:null;_(e,l)},U=function(e){var t=C(e.split("=",2),2),n=t[0],r=t[1];_(n,D(e)?"":r)},F=function(e){_("q",e)},M=a.map(function(e){return{key:e.key,label:e.label,id:"filters-menu-".concat(e.key),items:e.options.map(function(t){return{component:function(){return S.createElement(i.$,{isDisabled:n,type:"action",extraClasses:N(e.key,t.value)?"active-menu-item":"",onClickHandler:function(){H(e.key,t.value)}},t.label)}}})}}),L={label:"Sort",id:"sort-menu",items:l.map(function(e){return{component:function(){return S.createElement(i.$,{isDisabled:n,type:"action",extraClasses:T(e.param)?"active-menu-item":"",onClickHandler:function(){return U(e.param)}},e.label)}}})};return S.createElement("form",{className:"search-filter ".concat(a.length?void 0:"inline-on-mobile"),onSubmit:function(e){e.preventDefault(),F(A)}},M.map(function(e){return S.createElement(j.q,{key:e.key,className:"search-filter-category search-filter-filters",isOpen:b===e.key,setIsOpen:function(t){return v(t?e.key:null)}},S.createElement(i.$,{type:"select","aria-controls":e.id,"aria-haspopup":"menu","aria-expanded":b===e.key,extraClasses:"".concat(f.get(e.key)?"active":""," ").concat(n?"inactive":""),onClickHandler:function(){return v(b===e.key?null:e.key)},isDisabled:0===e.items.length},e.label),S.createElement(j.r,null,S.createElement(O.Q,{submenuId:e.id,menuEntry:e,isDropdown:!0})))}),S.createElement(k,{isDisabled:n,name:"terms",placeholder:"Filter by keyword",value:A,onBlurHandler:function(){return F((0,p.U6)(A))},onChangeHandler:function(e){return P(e.target.value)},onResetHandler:function(){P(""),F("")}}),l.length?S.createElement(j.q,{className:"search-filter-category search-filter-sorts",isOpen:g,setIsOpen:E},S.createElement(i.$,{type:"select","aria-controls":L.id,"aria-haspopup":"menu","aria-expanded":g||void 0,extraClasses:"".concat(f.get("sort")?"active":""," ").concat(n?"inactive":""),onClickHandler:function(){E(!g)}},L.label),S.createElement(j.r,null,S.createElement(O.Q,{submenuId:L.id,menuEntry:L,isDropdown:!0}))):null)}n(77242);var I=n(73730),N=n(96540);function D(e){var t=e.error;return N.createElement(I.A,{type:"negative"},N.createElement("h3",null,"Server error"),N.createElement("p",null,"A server error occurred trying to get your collections."),N.createElement("p",null,N.createElement("code",null,t.toString())),N.createElement("a",{href:window.location.pathname},"Reload this page and try again."))}var T=n(53802);function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function U(e){if(Array.isArray(e))return e}function F(e,t,n,r,a,o,l){try{var i=e[o](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,a)}function M(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function L(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function R(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function $(e,t){return U(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||B(e,t)||L()}function q(e){return function(e){if(Array.isArray(e))return H(e)}(e)||M(e)||B(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function B(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}}var G=S.lazy(function(){return Promise.all([n.e("1963"),n.e("9976")]).then(n.bind(n,10742))}),V={api:"Web APIs",css:"CSS",html:"HTML",http:"HTTP",javascript:"JavaScript",mathml:"MathML",svg:"SVG",webdriver:"WebDriver",webextensions:"Web Extensions"},W=[{type:"select",multiple:{encode:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join(",")},decode:function(e){return e.split(",")}},label:"Browser",key:"browsers",options:Object.entries({chrome:"Chrome",chrome_android:"Chrome Android",deno:"Deno",edge:"Edge",firefox:"Firefox",firefox_android:"Firefox for Android",ie:"Internet Explorer",nodejs:"Node.js",opera:"Opera",opera_android:"Opera Android",safari:"Safari",safari_ios:"Safari on iOS",samsunginternet_android:"Samsung Internet",webview_android:"WebView Android"}).map(function(e){var t=$(e,2),n=t[0];return{label:t[1],value:n}})},{type:"select",multiple:{encode:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join(",")},decode:function(e){return e.split(",")}},label:"Category",key:"category",options:Object.entries(V).sort(function(e,t){var n=$(e,2)[1],r=$(t,2)[1];return n.localeCompare(r)}).map(function(e){var t=$(e,2),n=t[0];return{label:t[1],value:n}})},{type:"select",label:"Collections",key:"collections",multiple:{encode:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join(",")},decode:function(e){return e.split(",")}},options:[]}],z=[{label:"Newest",param:"sort=desc",isDefault:!0},{label:"Oldest",param:"sort=asc"}];function Q(){return S.createElement(X,null)}var J=function(e){var t=$((0,S.useState)(W),2),n=t[0],r=t[1],a=(0,T.Xd)(),o=a.data,l=a.isLoading,i=a.error;return(0,S.useEffect)(function(){!l&&(null==o?void 0:o.length)&&!i&&r(function(e){return e.map(function(e){var t,n;return"collections"!==e.key?e:(t=R({},e),n=n={options:null==o?void 0:o.filter(function(e){return e.article_count>0}).map(function(e){return{label:"Default"===e.name?"Saved Articles":e.name,value:e.id}})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)})})},[l,e,o,i]),n};function X(){document.title="Updates | ".concat(o.U6),(0,l.bs)();var e,t,n,m=(0,d.P_)(),p=(e=(0,d.P_)(),t=h((0,y.ok)(),1)[0],n=function(e){var t,n=e.isAuthenticated,r=e.searchParams,a="/api/v2/updates/",o=new URLSearchParams,l=!0,i=!1,c=void 0;try{for(var u,s=r.entries()[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var f=h(u.value,2),m=f[0],d=f[1];switch(m){case"page":o.set(m,d);break;case"collections":n&&(a+="collections/",o.set(m,d));break;default:n&&o.set(m,d)}}}catch(e){i=!0,c=e}finally{try{l||null==s.return||s.return()}finally{if(i)throw c}}return(function(e){if(Array.isArray(e))return b(e)}(t=o.keys())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||g(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).length&&(a+="?".concat(o.toString())),a}({isAuthenticated:(null==e?void 0:e.isAuthenticated)||!1,searchParams:t}),(0,a.Ay)(n,function(e){var t;return(t=function(){var t;return function(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return l.next=i(0),l.throw=i(1),l.return=i(2),"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function i(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,r=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:if(!(t=n.sent()).ok)return[3,3];return[4,t.json()];case 2:return[2,n.sent()];case 3:if(404===t.status)return[2];throw Error("".concat(t.status,": ").concat(t.statusText))}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var o=t.apply(e,n);function l(e){v(o,r,a,l,i,"next",e)}function i(e){v(o,r,a,l,i,"throw",e)}l(void 0)})})()},{revalidateOnFocus:!1,revalidateIfStale:!1,revalidateOnReconnect:!1})),k=p.data,O=p.error,j=(0,E.db)(),A=$((0,y.ok)(),2),C=A[0],x=A[1],P=(0,l.Ju)().setViewed;(0,S.useEffect)(function(){return P(o.mQ.PLUS_UPDATES_V2)});var I=q(C.keys()).some(function(e){return"page"!==e}),N=(null==m?void 0:m.isAuthenticated)===!0,T=J(N);return S.createElement("div",{className:"updates"},S.createElement("header",{className:"plus-header-mandala"},S.createElement(r.A,null,S.createElement("h1",null,S.createElement("div",{className:"mandala-icon-wrapper"},S.createElement(s.A,null),S.createElement(c.I,{name:"bell-filled"})),S.createElement("span",null,"Updates")),S.createElement("p",null,"Stay up-to-date with the latest browser features.",S.createElement("br",null),S.createElement("a",{href:"https://survey.alchemer.com/s3/7149796/MDN-BCD-Updates",target:"_blank",rel:"noreferrer noopener",className:"external"},"We'd love to hear your feedback!")))),S.createElement(r.A,null,N&&S.createElement(_,{filters:T,sorts:z,isDisabled:!N,onChange:function(e,t,n){return j("".concat(w.Se.FILTER_CHANGE,"_").concat(e,": ").concat(null!=n?n:"(default)"," -> ").concat(null!=t?t:"(default)"))}}),N&&I&&S.createElement(i.$,{type:"action",extraClasses:"reset-filters",onClickHandler:function(){return x("")}},"Reset all filters"),O&&S.createElement(D,{error:O}),k?S.createElement(S.Fragment,null,k.data.length?k.data.map(function(e){return S.createElement(Y,{key:e.browser+e.version,group:e})}):S.createElement("div",{className:"notecard"},I?"No updates match your filters.":"No updates found."),S.createElement(f.m,{last:k.last,onChange:function(e,t){return j("".concat(w.Se.PAGE_CHANGE,": ").concat(t," -> ").concat(e))}})):S.createElement(u.R,null)))}function Y(e){var t,n,r=e.group,a=r.release_date,o=r.events,l=r.browser,i=r.version,u=r.name,s=o.added.length+o.removed.length,f={icon:(t=l).startsWith("firefox")?"simple-firefox":"webview_android"===t?"webview":"webview_ios"===t?"safari":t.split("_")[0],title:"".concat(u," ").concat(i)},m=q(o.added.map(function(e){return R({status:"added"},e)})).concat(q(o.removed.map(function(e){return R({status:"removed"},e)}))).sort(function(e,t){return e.path.localeCompare(t.path)});return f?S.createElement("div",{className:"group"},S.createElement("header",null,S.createElement(c.I,{name:f.icon}),f.title,S.createElement("span",{className:"number-badge"},s," ",1===s?"update":"updates"),S.createElement("time",{dateTime:a},new Date(a).toLocaleDateString(void 0,{dateStyle:"medium"}))),(n=m).filter(function(e){return -1===n.findIndex(function(t){return t.path===e.path.split(".").slice(0,-1).join(".")})}).map(function(e){return S.createElement(K,{key:e.path,event:e,status:e.status})})):null}function K(e){var t,n=e.event,r=e.status,a=$((0,S.useState)(!1),2),o=a[0],l=a[1],i=U(t=n.path.split("."))||M(t)||B(t)||L(),u=i[0],s=i.slice(1),f=n.compat.engines,m=(0,E.db)();return S.createElement("details",{className:"category-".concat(u),onToggle:function(e){var t,n=e.target;(null!=(t=HTMLDetailsElement)&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](n):n instanceof t)&&(l(n.open),m(n.open?w.Se.EVENT_EXPAND:w.Se.EVENT_COLLAPSE))}},S.createElement("summary",null,S.createElement("code",null,(0,p.jj)(s.join("."))),S.createElement("i",null,V[u]),S.createElement(Z,{status:r}),!!f.length&&S.createElement("span",{className:"status",title:"Supported in ".concat(f.join(", "))},S.createElement("svg",{width:"32",height:"9",viewBox:"0 0 32 9",role:"img"},(0,p.y1)(0,3).map(function(e){return S.createElement("circle",{key:e,cx:4+12*e,cy:"4.5",r:"4",className:f.length>e?"active":void 0})}))),S.createElement(c.I,{name:"chevron"})),o&&S.createElement(ee,{event:n}))}function Z(e){var t=e.status;return S.createElement("span",{className:"badge status-".concat(t)},t)}function ee(e){var t=e.event,n=t.path,r=t.compat.mdn_url,a=(0,l.Ym)();return S.createElement("div",null,S.createElement(et,{path:n,mdn_url:r}),S.createElement(G,{query:n,locale:a}))}function et(e){var t=e.path,n=e.mdn_url,r=(0,d.P_)(),o=(0,l.Ym)(),c=null==n?void 0:n.replace("https://developer.mozilla.org","/".concat(o)),u="/".concat(o,"/search?sort=relevance&locale=en-US").concat("en-US"!==o?"&locale=".concat(o):"","&q=").concat(encodeURIComponent(t)),s=(0,a.Ay)(function(){return(null==r?void 0:r.isAuthenticated)&&c&&"".concat(c,"/metadata.json")},function(e){var t;return(t=function(){var t;return function(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return l.next=i(0),l.throw=i(1),l.return=i(2),"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function i(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,r=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:if(!(t=n.sent()).ok)throw Error(t.statusText);return[4,t.json()];case 2:return[2,n.sent()]}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var o=t.apply(e,n);function l(e){F(o,r,a,l,i,"next",e)}function i(e){F(o,r,a,l,i,"throw",e)}l(void 0)})})()},{revalidateIfStale:!1,revalidateOnFocus:!1,revalidateOnReconnect:!1}).data;return S.createElement("nav",null,S.createElement(i.$,{type:"action",icon:c?"external":"search",size:"small",href:c||u,target:"_blank",extraClasses:"link-button"},c?"See full article":"Search for article"),c&&S.createElement(S.Fragment,null,S.createElement(m.A,{doc:s})))}},16563:function(e,t,n){n.d(t,{A:()=>a});var r=n(96540);function a(e){var t=e.children,n=e.extraClasses,a=e.optional;return r.createElement(r.Fragment,null,!0===a?r.createElement(r.Fragment,null,t):r.createElement("div",{className:"container ".concat(n||"")},t))}},8574:function(e,t,n){n.d(t,{m:()=>f});var r=n(60274),a=n(45571),o=n(96540);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var u="page";function s(e){var t=e.page,n=e.children,a=e.onClick,l=e.disabled,s=c((0,r.ok)(),2),f=s[0],m=s[1];return o.createElement(r.N_,{to:{},className:l?"disabled":"",onClick:function(e){if(e.preventDefault(),!l){var n,r;a&&a(t),m((n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){i(e,t,n[t])})}return e}({},Object.fromEntries(f.entries())),r=null!=(r=i({},u,t.toString()))?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n)),window.setTimeout(function(){return document.documentElement.scrollTo()})}}},n||t)}function f(e){var t=e.first,n=void 0===t?1:t,l=e.last,i=e.endPadding,f=void 0===i?2:i,m=e.middlePadding,d=void 0===m?2:m,p=e.onChange,y=parseInt(c((0,r.ok)(),1)[0].get(u)||"",10)||n,b=Math.max(y-d,n),v=Math.min(b+2*d+1,l+1),h=(0,a.y1)(n,Math.min(f,b)),g=(0,a.y1)(b,v),E=(0,a.y1)(Math.max(l+1-f,v),l+1),w=function(e){p&&p(e,y)};return n===l?o.createElement(o.Fragment,null):o.createElement("div",{className:"pagination"},o.createElement(s,{page:y-1,onClick:w,disabled:y===n},"← Previous"),h.map(function(e){return o.createElement(s,{key:e,page:e,onClick:w})}),!!h.length&&h[h.length-1]+1!==g[0]&&"…",g.map(function(e){return y===e?o.createElement("span",{className:"current-page",key:e},e):o.createElement(s,{key:e,page:e,onClick:w})}),!!E.length&&g[g.length-1]+1!==E[0]&&"…",E.map(function(e){return o.createElement(s,{key:e,page:e,onClick:w})}),o.createElement(s,{page:y+1,onClick:w,disabled:y===l},"Next →"))}}};
2
- //# sourceMappingURL=7827.838d9e673c56e936.js.map
1
+ export const __webpack_id__="7827";export const __webpack_ids__=["7827"];export const __webpack_modules__={27902:function(e,t,n){n.r(t),n.d(t,{default:()=>Q});var r=n(16563),a=n(18761),o=n(40967),l=n(23425),i=n(28166),c=n(76793),u=n(65318),s=n(78935),f=n(8574),m=n(44806),d=n(5592),p=n(45571),y=n(39330);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t,n,r,a,o,l){try{var i=e[o](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,a)}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||g(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b(e,t)}}n(85521);var E=n(7874),w=n(47263),S=n(96540),k=function(e){var t=e.name,n=e.isDisabled,r=void 0!==n&&n,a=e.onBlurHandler,o=e.onChangeHandler,l=e.onClickHandler,i=e.onFocusHandler,c=e.onResetHandler,u=e.placeholder,s=e.value;return S.createElement("div",{className:"search-form search-widget"},S.createElement("input",{type:"search",className:"search-input-field",name:t,placeholder:u,value:s,disabled:r,onBlur:function(e){var t;return a&&!(null==(t=e.currentTarget.parentElement)?void 0:t.contains(e.relatedTarget))&&a(e)},onFocus:i,onChange:o,onClick:l}),c&&S.createElement("button",{type:"button",className:"button action has-icon clear-search-button",onClick:c},S.createElement("span",{className:"button-wrap"},S.createElement("span",{className:"icon icon-cancel"}),S.createElement("span",{className:"visually-hidden"},"Clear search input"))),S.createElement("button",{type:"submit",disabled:r,className:"button action has-icon search-button search-filter-button"},S.createElement("span",{className:"button-wrap"},S.createElement("span",{className:"icon icon-search"}),S.createElement("span",{className:"visually-hidden"},"Search"))))},O=n(17428),j=n(29558);function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||P(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e){return function(e){if(Array.isArray(e))return A(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||P(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t){if(e){if("string"==typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return A(e,t)}}function _(e){var t=e.isDisabled,n=void 0!==t&&t,r=e.filters,a=void 0===r?[]:r,o=e.sorts,l=void 0===o?[]:o,c=e.onChange,u=void 0===c?function(e,t,n){}:c,s=C((0,y.ok)(),2),f=s[0],m=s[1],d=C((0,S.useState)(null),2),b=d[0],v=d[1],h=C((0,S.useState)(!1),2),g=h[0],E=h[1],w=C((0,S.useState)(""),2),A=w[0],P=w[1];(0,S.useEffect)(function(){var e;return P(null!=(e=f.get("q"))?e:"")},[f]);var _=function(e,t){m(function(n){var r=n.get(e);return t?n.set(e,t):n.delete(e),u(e,t,r),n.delete("page"),new URLSearchParams(x(n.entries()).sort(function(e,t){var n=C(e,1)[0],r=C(t,1)[0];return n.localeCompare(r)}))})},I=function(e,t){var n,r=a.find(function(t){return t.key===e}).options.find(function(e){return e.value===t});return null!=(n=null==r?void 0:r.isDefault)&&n},N=function(e,t){var n,r=null!=(n=f.get(e))?n:null,o=a.find(function(t){return t.key===e});return o.multiple?("string"==typeof r?o.multiple.decode(r):[]).includes(t):r?r===t:I(e,t)},D=function(e){var t,n=l.find(function(t){return t.param===e});return null!=(t=null==n?void 0:n.isDefault)&&t},T=function(e){var t,n=C(e.split("=",2),2),r=n[0],a=n[1],o=null!=(t=f.get(r))?t:null;return o?o===a:D(e)},H=function(e,t){var n=null!=(o=f.get(e))?o:null,r=a.find(function(t){return t.key===e});if(r.multiple){var o,l,i,c="string"==typeof n?r.multiple.decode(n):[];l=(c=c.includes(t)?c.filter(function(e){return e!==t}):x(c).concat([t]).sort()).length?(i=r.multiple).encode.apply(i,x(c)):null}else l=I(e,t)?null:n!==t?t:null;_(e,l)},U=function(e){var t=C(e.split("=",2),2),n=t[0],r=t[1];_(n,D(e)?"":r)},F=function(e){_("q",e)},M=a.map(function(e){return{key:e.key,label:e.label,id:"filters-menu-".concat(e.key),items:e.options.map(function(t){return{component:function(){return S.createElement(i.$,{isDisabled:n,type:"action",extraClasses:N(e.key,t.value)?"active-menu-item":"",onClickHandler:function(){H(e.key,t.value)}},t.label)}}})}}),L={label:"Sort",id:"sort-menu",items:l.map(function(e){return{component:function(){return S.createElement(i.$,{isDisabled:n,type:"action",extraClasses:T(e.param)?"active-menu-item":"",onClickHandler:function(){return U(e.param)}},e.label)}}})};return S.createElement("form",{className:"search-filter ".concat(a.length?void 0:"inline-on-mobile"),onSubmit:function(e){e.preventDefault(),F(A)}},M.map(function(e){return S.createElement(j.q,{key:e.key,className:"search-filter-category search-filter-filters",isOpen:b===e.key,setIsOpen:function(t){return v(t?e.key:null)}},S.createElement(i.$,{type:"select","aria-controls":e.id,"aria-haspopup":"menu","aria-expanded":b===e.key,extraClasses:"".concat(f.get(e.key)?"active":""," ").concat(n?"inactive":""),onClickHandler:function(){return v(b===e.key?null:e.key)},isDisabled:0===e.items.length},e.label),S.createElement(j.r,null,S.createElement(O.Q,{submenuId:e.id,menuEntry:e,isDropdown:!0})))}),S.createElement(k,{isDisabled:n,name:"terms",placeholder:"Filter by keyword",value:A,onBlurHandler:function(){return F((0,p.U6)(A))},onChangeHandler:function(e){return P(e.target.value)},onResetHandler:function(){P(""),F("")}}),l.length?S.createElement(j.q,{className:"search-filter-category search-filter-sorts",isOpen:g,setIsOpen:E},S.createElement(i.$,{type:"select","aria-controls":L.id,"aria-haspopup":"menu","aria-expanded":g||void 0,extraClasses:"".concat(f.get("sort")?"active":""," ").concat(n?"inactive":""),onClickHandler:function(){E(!g)}},L.label),S.createElement(j.r,null,S.createElement(O.Q,{submenuId:L.id,menuEntry:L,isDropdown:!0}))):null)}n(77242);var I=n(73730),N=n(96540);function D(e){var t=e.error;return N.createElement(I.A,{type:"negative"},N.createElement("h3",null,"Server error"),N.createElement("p",null,"A server error occurred trying to get your collections."),N.createElement("p",null,N.createElement("code",null,t.toString())),N.createElement("a",{href:window.location.pathname},"Reload this page and try again."))}var T=n(53802);function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function U(e){if(Array.isArray(e))return e}function F(e,t,n,r,a,o,l){try{var i=e[o](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,a)}function M(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function L(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function R(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function $(e,t){return U(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||B(e,t)||L()}function q(e){return function(e){if(Array.isArray(e))return H(e)}(e)||M(e)||B(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function B(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}}var G=S.lazy(function(){return Promise.all([n.e("1963"),n.e("9976")]).then(n.bind(n,10742))}),V={api:"Web APIs",css:"CSS",html:"HTML",http:"HTTP",javascript:"JavaScript",mathml:"MathML",svg:"SVG",webdriver:"WebDriver",webextensions:"Web Extensions"},W=[{type:"select",multiple:{encode:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join(",")},decode:function(e){return e.split(",")}},label:"Browser",key:"browsers",options:Object.entries({chrome:"Chrome",chrome_android:"Chrome Android",deno:"Deno",edge:"Edge",firefox:"Firefox",firefox_android:"Firefox for Android",ie:"Internet Explorer",nodejs:"Node.js",opera:"Opera",opera_android:"Opera Android",safari:"Safari",safari_ios:"Safari on iOS",samsunginternet_android:"Samsung Internet",webview_android:"WebView Android"}).map(function(e){var t=$(e,2),n=t[0];return{label:t[1],value:n}})},{type:"select",multiple:{encode:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join(",")},decode:function(e){return e.split(",")}},label:"Category",key:"category",options:Object.entries(V).sort(function(e,t){var n=$(e,2)[1],r=$(t,2)[1];return n.localeCompare(r)}).map(function(e){var t=$(e,2),n=t[0];return{label:t[1],value:n}})},{type:"select",label:"Collections",key:"collections",multiple:{encode:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join(",")},decode:function(e){return e.split(",")}},options:[]}],z=[{label:"Newest",param:"sort=desc",isDefault:!0},{label:"Oldest",param:"sort=asc"}];function Q(){return S.createElement(X,null)}var J=function(e){var t=$((0,S.useState)(W),2),n=t[0],r=t[1],a=(0,T.Xd)(),o=a.data,l=a.isLoading,i=a.error;return(0,S.useEffect)(function(){!l&&(null==o?void 0:o.length)&&!i&&r(function(e){return e.map(function(e){var t,n;return"collections"!==e.key?e:(t=R({},e),n=n={options:null==o?void 0:o.filter(function(e){return e.article_count>0}).map(function(e){return{label:"Default"===e.name?"Saved Articles":e.name,value:e.id}})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)})})},[l,e,o,i]),n};function X(){document.title="Updates | ".concat(o.U6),(0,l.bs)();var e,t,n,m=(0,d.P_)(),p=(e=(0,d.P_)(),t=h((0,y.ok)(),1)[0],n=function(e){var t,n=e.isAuthenticated,r=e.searchParams,a="/api/v2/updates/",o=new URLSearchParams,l=!0,i=!1,c=void 0;try{for(var u,s=r.entries()[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var f=h(u.value,2),m=f[0],d=f[1];switch(m){case"page":o.set(m,d);break;case"collections":n&&(a+="collections/",o.set(m,d));break;default:n&&o.set(m,d)}}}catch(e){i=!0,c=e}finally{try{l||null==s.return||s.return()}finally{if(i)throw c}}return(function(e){if(Array.isArray(e))return b(e)}(t=o.keys())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||g(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).length&&(a+="?".concat(o.toString())),a}({isAuthenticated:(null==e?void 0:e.isAuthenticated)||!1,searchParams:t}),(0,a.Ay)(n,function(e){var t;return(t=function(){var t;return function(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return l.next=i(0),l.throw=i(1),l.return=i(2),"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function i(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,r=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:if(!(t=n.sent()).ok)return[3,3];return[4,t.json()];case 2:return[2,n.sent()];case 3:if(404===t.status)return[2];throw Error("".concat(t.status,": ").concat(t.statusText))}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var o=t.apply(e,n);function l(e){v(o,r,a,l,i,"next",e)}function i(e){v(o,r,a,l,i,"throw",e)}l(void 0)})})()},{revalidateOnFocus:!1,revalidateIfStale:!1,revalidateOnReconnect:!1})),k=p.data,O=p.error,j=(0,E.db)(),A=$((0,y.ok)(),2),C=A[0],x=A[1],P=(0,l.Ju)().setViewed;(0,S.useEffect)(function(){return P(o.mQ.PLUS_UPDATES_V2)});var I=q(C.keys()).some(function(e){return"page"!==e}),N=(null==m?void 0:m.isAuthenticated)===!0,T=J(N);return S.createElement("div",{className:"updates"},S.createElement("header",{className:"plus-header-mandala"},S.createElement(r.A,null,S.createElement("h1",null,S.createElement("div",{className:"mandala-icon-wrapper"},S.createElement(s.A,null),S.createElement(c.I,{name:"bell-filled"})),S.createElement("span",null,"Updates")),S.createElement("p",null,"Stay up-to-date with the latest browser features.",S.createElement("br",null),S.createElement("a",{href:"https://survey.alchemer.com/s3/7149796/MDN-BCD-Updates",target:"_blank",rel:"noreferrer noopener",className:"external"},"We'd love to hear your feedback!")))),S.createElement(r.A,null,N&&S.createElement(_,{filters:T,sorts:z,isDisabled:!N,onChange:function(e,t,n){return j("".concat(w.Se.FILTER_CHANGE,"_").concat(e,": ").concat(null!=n?n:"(default)"," -> ").concat(null!=t?t:"(default)"))}}),N&&I&&S.createElement(i.$,{type:"action",extraClasses:"reset-filters",onClickHandler:function(){return x("")}},"Reset all filters"),O&&S.createElement(D,{error:O}),k?S.createElement(S.Fragment,null,k.data.length?k.data.map(function(e){return S.createElement(Y,{key:e.browser+e.version,group:e})}):S.createElement("div",{className:"notecard"},I?"No updates match your filters.":"No updates found."),S.createElement(f.m,{last:k.last,onChange:function(e,t){return j("".concat(w.Se.PAGE_CHANGE,": ").concat(t," -> ").concat(e))}})):S.createElement(u.R,null)))}function Y(e){var t,n,r=e.group,a=r.release_date,o=r.events,l=r.browser,i=r.version,u=r.name,s=o.added.length+o.removed.length,f={icon:(t=l).startsWith("firefox")?"simple-firefox":"webview_android"===t?"webview":"webview_ios"===t?"safari":t.split("_")[0],title:"".concat(u," ").concat(i)},m=q(o.added.map(function(e){return R({status:"added"},e)})).concat(q(o.removed.map(function(e){return R({status:"removed"},e)}))).sort(function(e,t){return e.path.localeCompare(t.path)});return f?S.createElement("div",{className:"group"},S.createElement("header",null,S.createElement(c.I,{name:f.icon}),f.title,S.createElement("span",{className:"number-badge"},s," ",1===s?"update":"updates"),S.createElement("time",{dateTime:a},new Date(a).toLocaleDateString(void 0,{dateStyle:"medium"}))),(n=m).filter(function(e){return -1===n.findIndex(function(t){return t.path===e.path.split(".").slice(0,-1).join(".")})}).map(function(e){return S.createElement(K,{key:e.path,event:e,status:e.status})})):null}function K(e){var t,n=e.event,r=e.status,a=$((0,S.useState)(!1),2),o=a[0],l=a[1],i=U(t=n.path.split("."))||M(t)||B(t)||L(),u=i[0],s=i.slice(1),f=n.compat.engines,m=(0,E.db)();return S.createElement("details",{className:"category-".concat(u),onToggle:function(e){var t,n=e.target;(null!=(t=HTMLDetailsElement)&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](n):n instanceof t)&&(l(n.open),m(n.open?w.Se.EVENT_EXPAND:w.Se.EVENT_COLLAPSE))}},S.createElement("summary",null,S.createElement("code",null,(0,p.jj)(s.join("."))),S.createElement("i",null,V[u]),S.createElement(Z,{status:r}),!!f.length&&S.createElement("span",{className:"status",title:"Supported in ".concat(f.join(", "))},S.createElement("svg",{width:"32",height:"9",viewBox:"0 0 32 9",role:"img"},(0,p.y1)(0,3).map(function(e){return S.createElement("circle",{key:e,cx:4+12*e,cy:"4.5",r:"4",className:f.length>e?"active":void 0})}))),S.createElement(c.I,{name:"chevron"})),o&&S.createElement(ee,{event:n}))}function Z(e){var t=e.status;return S.createElement("span",{className:"badge status-".concat(t)},t)}function ee(e){var t=e.event,n=t.path,r=t.compat.mdn_url,a=(0,l.Ym)();return S.createElement("div",null,S.createElement(et,{path:n,mdn_url:r}),S.createElement(G,{query:n,locale:a}))}function et(e){var t=e.path,n=e.mdn_url,r=(0,d.P_)(),o=(0,l.Ym)(),c=null==n?void 0:n.replace("https://developer.mozilla.org","/".concat(o)),u="/".concat(o,"/search?sort=relevance&locale=en-US").concat("en-US"!==o?"&locale=".concat(o):"","&q=").concat(encodeURIComponent(t)),s=(0,a.Ay)(function(){return(null==r?void 0:r.isAuthenticated)&&c&&"".concat(c,"/metadata.json")},function(e){var t;return(t=function(){var t;return function(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return l.next=i(0),l.throw=i(1),l.return=i(2),"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function i(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,r=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:if(!(t=n.sent()).ok)throw Error(t.statusText);return[4,t.json()];case 2:return[2,n.sent()]}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var o=t.apply(e,n);function l(e){F(o,r,a,l,i,"next",e)}function i(e){F(o,r,a,l,i,"throw",e)}l(void 0)})})()},{revalidateIfStale:!1,revalidateOnFocus:!1,revalidateOnReconnect:!1}).data;return S.createElement("nav",null,S.createElement(i.$,{type:"action",icon:c?"external":"search",size:"small",href:c||u,target:"_blank",extraClasses:"link-button"},c?"See full article":"Search for article"),c&&S.createElement(S.Fragment,null,S.createElement(m.A,{doc:s})))}},16563:function(e,t,n){n.d(t,{A:()=>a});var r=n(96540);function a(e){var t=e.children,n=e.extraClasses,a=e.optional;return r.createElement(r.Fragment,null,!0===a?r.createElement(r.Fragment,null,t):r.createElement("div",{className:"container ".concat(n||"")},t))}},8574:function(e,t,n){n.d(t,{m:()=>f});var r=n(39330),a=n(45571),o=n(96540);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var u="page";function s(e){var t=e.page,n=e.children,a=e.onClick,l=e.disabled,s=c((0,r.ok)(),2),f=s[0],m=s[1];return o.createElement(r.N_,{to:{},className:l?"disabled":"",onClick:function(e){if(e.preventDefault(),!l){var n,r;a&&a(t),m((n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){i(e,t,n[t])})}return e}({},Object.fromEntries(f.entries())),r=null!=(r=i({},u,t.toString()))?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n)),window.setTimeout(function(){return document.documentElement.scrollTo()})}}},n||t)}function f(e){var t=e.first,n=void 0===t?1:t,l=e.last,i=e.endPadding,f=void 0===i?2:i,m=e.middlePadding,d=void 0===m?2:m,p=e.onChange,y=parseInt(c((0,r.ok)(),1)[0].get(u)||"",10)||n,b=Math.max(y-d,n),v=Math.min(b+2*d+1,l+1),h=(0,a.y1)(n,Math.min(f,b)),g=(0,a.y1)(b,v),E=(0,a.y1)(Math.max(l+1-f,v),l+1),w=function(e){p&&p(e,y)};return n===l?o.createElement(o.Fragment,null):o.createElement("div",{className:"pagination"},o.createElement(s,{page:y-1,onClick:w,disabled:y===n},"← Previous"),h.map(function(e){return o.createElement(s,{key:e,page:e,onClick:w})}),!!h.length&&h[h.length-1]+1!==g[0]&&"…",g.map(function(e){return y===e?o.createElement("span",{className:"current-page",key:e},e):o.createElement(s,{key:e,page:e,onClick:w})}),!!E.length&&g[g.length-1]+1!==E[0]&&"…",E.map(function(e){return o.createElement(s,{key:e,page:e,onClick:w})}),o.createElement(s,{page:y+1,onClick:w,disabled:y===l},"Next →"))}}};
2
+ //# sourceMappingURL=7827.efd03057dbb6c884.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"7827.838d9e673c56e936.js","sources":["webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/ui/atoms/search/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/search-filter/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/common/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/updates/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/updates/api.ts","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/ui/atoms/container/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/ui/molecules/paginator/index.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport \"./index.scss\";\n\ntype SearchProps = {\n name: string;\n placeholder?: string;\n value?: string;\n isDisabled?: boolean;\n onBlurHandler?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onChangeHandler?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onClickHandler?: (event: React.MouseEvent<Element>) => void;\n onFocusHandler?: (event: React.FocusEvent<Element>) => void;\n onResetHandler?: () => void;\n};\n\nexport const Search = ({\n name,\n isDisabled = false,\n onBlurHandler,\n onChangeHandler,\n onClickHandler,\n onFocusHandler,\n onResetHandler,\n placeholder,\n value,\n}: SearchProps) => {\n return (\n <div className=\"search-form search-widget\">\n <input\n type=\"search\"\n className=\"search-input-field\"\n name={name}\n placeholder={placeholder}\n value={value}\n disabled={isDisabled}\n onBlur={(e) =>\n onBlurHandler &&\n !e.currentTarget.parentElement?.contains(e.relatedTarget) &&\n onBlurHandler(e)\n }\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n />\n\n {onResetHandler && (\n <button\n type=\"button\"\n className=\"button action has-icon clear-search-button\"\n onClick={onResetHandler}\n >\n <span className=\"button-wrap\">\n <span className=\"icon icon-cancel\"></span>\n <span className=\"visually-hidden\">Clear search input</span>\n </span>\n </button>\n )}\n\n <button\n type=\"submit\"\n disabled={isDisabled}\n className=\"button action has-icon search-button search-filter-button\"\n >\n <span className=\"button-wrap\">\n <span className=\"icon icon-search\"></span>\n <span className=\"visually-hidden\">Search</span>\n </span>\n </button>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport { Button } from \"../../ui/atoms/button\";\nimport { Search } from \"../../ui/atoms/search\";\nimport { Submenu } from \"../../ui/molecules/submenu\";\n\nimport \"./index.scss\";\nimport { DropdownMenu, DropdownMenuWrapper } from \"../../ui/molecules/dropdown\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { camelUnwrap } from \"../../utils\";\n\nexport type AnyFilter = SelectFilter;\n\ntype SelectFilter = {\n type: \"select\";\n key: string;\n label: string;\n multiple?: {\n encode: (...values: string[]) => string;\n decode: (value: string) => string[];\n };\n options: {\n label: string;\n value: string;\n isDefault?: true;\n }[];\n};\n\nexport type AnySort = { label: string; param: string; isDefault?: true };\n\nenum Params {\n PAGE = \"page\",\n QUERY = \"q\",\n}\n\nexport default function SearchFilter({\n isDisabled = false,\n filters = [],\n sorts = [],\n onChange = (key, newValue, oldValue) => {},\n}: {\n isDisabled?: boolean;\n filters?: AnyFilter[];\n sorts?: AnySort[];\n onChange?: (\n key: string,\n newValue: string | null,\n oldValue: string | null\n ) => unknown;\n}) {\n const [searchParams, setSearchParams] = useSearchParams();\n\n const [openFilter, setOpenFilter] = useState<string | null>(null);\n const [isSortingOpen, setIsSortingOpen] = useState<boolean>(false);\n const [terms, setTerms] = useState<string>(\"\");\n\n useEffect(\n () => setTerms(searchParams.get(Params.QUERY) ?? \"\"),\n [searchParams]\n );\n\n const sortedParams = (params: URLSearchParams): URLSearchParams =>\n new URLSearchParams(\n [...params.entries()].sort(([a], [b]) => a.localeCompare(b))\n );\n\n const replaceSearchParam = (key: string, value: string | null) => {\n setSearchParams((params) => {\n const oldValue = params.get(key);\n if (value) {\n params.set(key, value);\n } else {\n params.delete(key);\n }\n onChange(key, value, oldValue);\n params.delete(Params.PAGE);\n return sortedParams(params);\n });\n };\n\n const isDefaultFilter = (key: string, value: string) => {\n const filter = filters.find((filter) => filter.key === key) as AnyFilter;\n const option = filter.options.find((option) => option.value === value);\n return option?.isDefault ?? false;\n };\n\n const isCurrentFilter = (key: string, value: string) => {\n const currentValue = searchParams.get(key) ?? null;\n const filter = filters.find((filter) => filter.key === key) as AnyFilter;\n\n if (filter.multiple) {\n const values =\n typeof currentValue === \"string\"\n ? filter.multiple.decode(currentValue)\n : [];\n return values.includes(value);\n } else {\n return currentValue\n ? currentValue === value\n : isDefaultFilter(key, value);\n }\n };\n\n const isDefaultSort = (param: string) => {\n const sort = sorts.find((sort) => sort.param === param);\n return sort?.isDefault ?? false;\n };\n\n const isCurrentSort = (param: string) => {\n const [key, value] = param.split(\"=\", 2);\n const currentValue = searchParams.get(key) ?? null;\n return currentValue ? currentValue === value : isDefaultSort(param);\n };\n\n const toggleSelectedFilter = (key: string, value: string) => {\n const currentValue = searchParams.get(key) ?? null;\n const filter = filters.find((filter) => filter.key === key) as AnyFilter;\n let newValue: string | null;\n\n if (filter.multiple) {\n let values =\n typeof currentValue === \"string\"\n ? filter.multiple.decode(currentValue)\n : [];\n if (values.includes(value)) {\n values = values.filter((v) => v !== value);\n } else {\n values = [...values, value].sort();\n }\n if (values.length) {\n newValue = filter.multiple.encode(...values);\n } else {\n newValue = null;\n }\n } else if (isDefaultFilter(key, value)) {\n newValue = null;\n } else {\n newValue = currentValue !== value ? value : null;\n }\n\n replaceSearchParam(key, newValue);\n };\n\n const toggleSelectedSort = (param: string) => {\n const [key, value] = param.split(\"=\", 2);\n const newValue = isDefaultSort(param) ? \"\" : value;\n\n replaceSearchParam(key, newValue);\n };\n\n const setSelectedTerms = (newValue: string) => {\n replaceSearchParam(\"q\", newValue);\n };\n\n const filterMenus = filters.map((filter) => ({\n key: filter.key,\n label: filter.label,\n id: `filters-menu-${filter.key}`,\n items: filter.options.map((option) => ({\n component: () => (\n <Button\n isDisabled={isDisabled}\n type=\"action\"\n extraClasses={\n isCurrentFilter(filter.key, option.value) ? \"active-menu-item\" : \"\"\n }\n onClickHandler={() => {\n toggleSelectedFilter(filter.key, option.value);\n }}\n >\n {option.label}\n </Button>\n ),\n })),\n }));\n\n const sortMenu = {\n label: \"Sort\",\n id: \"sort-menu\",\n items: sorts.map((sort) => ({\n component: () => (\n <Button\n isDisabled={isDisabled}\n type=\"action\"\n extraClasses={isCurrentSort(sort.param) ? \"active-menu-item\" : \"\"}\n onClickHandler={() => toggleSelectedSort(sort.param)}\n >\n {sort.label}\n </Button>\n ),\n })),\n };\n\n return (\n <form\n className={`search-filter ${\n !filters.length ? \"inline-on-mobile\" : undefined\n }`}\n onSubmit={(event: React.FormEvent) => {\n event.preventDefault();\n setSelectedTerms(terms);\n }}\n >\n {filterMenus.map((filterMenu) => (\n <DropdownMenuWrapper\n key={filterMenu.key}\n className=\"search-filter-category search-filter-filters\"\n isOpen={openFilter === filterMenu.key}\n setIsOpen={(isOpen: boolean) =>\n setOpenFilter(isOpen ? filterMenu.key : null)\n }\n >\n <Button\n type=\"select\"\n aria-controls={filterMenu.id}\n aria-haspopup={\"menu\"}\n aria-expanded={openFilter === filterMenu.key}\n extraClasses={`${\n searchParams.get(filterMenu.key) ? \"active\" : \"\"\n } ${isDisabled ? \"inactive\" : \"\"}`}\n onClickHandler={() =>\n setOpenFilter(\n openFilter === filterMenu.key ? null : filterMenu.key\n )\n }\n isDisabled={filterMenu.items.length === 0}\n >\n {filterMenu.label}\n </Button>\n <DropdownMenu>\n <Submenu\n submenuId={filterMenu.id}\n menuEntry={filterMenu}\n isDropdown\n />\n </DropdownMenu>\n </DropdownMenuWrapper>\n ))}\n\n <Search\n isDisabled={isDisabled}\n name=\"terms\"\n placeholder=\"Filter by keyword\"\n value={terms}\n onBlurHandler={() =>\n // The updates event list uses `camelWrap()` to insert\n // zero-width spaces, so we `camelUnwrap()` them here.\n // Otherwise we would not find a copy-pasted feature.\n setSelectedTerms(camelUnwrap(terms))\n }\n onChangeHandler={(e) => setTerms(e.target.value)}\n onResetHandler={() => {\n setTerms(\"\");\n setSelectedTerms(\"\");\n }}\n />\n\n {sorts.length ? (\n <DropdownMenuWrapper\n className=\"search-filter-category search-filter-sorts\"\n isOpen={isSortingOpen}\n setIsOpen={setIsSortingOpen}\n >\n <Button\n type=\"select\"\n aria-controls={sortMenu.id}\n aria-haspopup={\"menu\"}\n aria-expanded={isSortingOpen || undefined}\n extraClasses={`${searchParams.get(\"sort\") ? \"active\" : \"\"} ${\n isDisabled ? \"inactive\" : \"\"\n }`}\n onClickHandler={() => {\n setIsSortingOpen(!isSortingOpen);\n }}\n >\n {sortMenu.label}\n </Button>\n <DropdownMenu>\n <Submenu submenuId={sortMenu.id} menuEntry={sortMenu} isDropdown />\n </DropdownMenu>\n </DropdownMenuWrapper>\n ) : null}\n </form>\n );\n}\n","import LogInLink from \"../../ui/atoms/login-link\";\nimport NoteCard from \"../../ui/molecules/notecards\";\nimport { getCategoryByPathname } from \"../../utils\";\n\nexport function NotSignedIn() {\n return (\n <div className=\"container\">\n <h3>You have not signed in</h3>\n <LogInLink />\n </div>\n );\n}\n\nexport function NotSubscriber() {\n return (\n <>\n <h2>You are signed in but not an active subscriber</h2>\n <LogInLink />\n </>\n );\n}\n\nexport function DataError({ error }: { error: Error }) {\n return (\n <NoteCard type=\"negative\">\n <h3>Server error</h3>\n <p>A server error occurred trying to get your collections.</p>\n <p>\n <code>{error.toString()}</code>\n </p>\n <a href={window.location.pathname}>Reload this page and try again.</a>\n </NoteCard>\n );\n}\n\nexport function _getIconLabel(url: string) {\n const category = getCategoryByPathname(url);\n\n if (!category) {\n return \"docs\";\n }\n\n if (category === \"javascript\") {\n return \"js\";\n }\n\n if (category === \"accessibility\") {\n return \"acc\";\n }\n\n return category;\n}\n","import Container from \"../../ui/atoms/container\";\n\nimport useSWR from \"swr\";\nimport { DocMetadata } from \"../../../../libs/types/document\";\nimport { FeatureId, MDN_PLUS_TITLE } from \"../../constants\";\nimport { useLocale, useScrollToTop, useViewedState } from \"../../hooks\";\nimport { Button } from \"../../ui/atoms/button\";\nimport { Icon } from \"../../ui/atoms/icon\";\nimport { Loading } from \"../../ui/atoms/loading\";\nimport Mandala from \"../../ui/molecules/mandala\";\nimport { Paginator } from \"../../ui/molecules/paginator\";\nimport BookmarkMenu from \"../../ui/organisms/article-actions/bookmark-menu\";\nimport { useUserData } from \"../../user-context\";\nimport { camelWrap, range } from \"../../utils\";\nimport { Event, Group, useUpdates } from \"./api\";\nimport \"./index.scss\";\nimport { useGleanClick } from \"../../telemetry/glean-context\";\nimport { PLUS_UPDATES } from \"../../telemetry/constants\";\nimport SearchFilter, { AnyFilter, AnySort } from \"../search-filter\";\nimport { useEffect, useState } from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { DataError } from \"../common\";\nimport { useCollections } from \"../collections/api\";\nimport React from \"react\";\n\nconst LazyCompatTable = React.lazy(\n () => import(\"../../lit/compat/lazy-compat-table.js\")\n);\n\ntype EventWithStatus = Event & { status: Status };\ntype Status = \"added\" | \"removed\";\n\nconst CATEGORY_TO_NAME = {\n api: \"Web APIs\",\n css: \"CSS\",\n html: \"HTML\",\n http: \"HTTP\",\n javascript: \"JavaScript\",\n mathml: \"MathML\",\n svg: \"SVG\",\n webdriver: \"WebDriver\",\n webextensions: \"Web Extensions\",\n};\n\n// At some point, these should come from the API\n// or from @mdn/browser-compat-data directly.\nconst BROWSERS = {\n chrome: \"Chrome\",\n chrome_android: \"Chrome Android\",\n deno: \"Deno\",\n edge: \"Edge\",\n firefox: \"Firefox\",\n firefox_android: \"Firefox for Android\",\n ie: \"Internet Explorer\",\n nodejs: \"Node.js\",\n opera: \"Opera\",\n opera_android: \"Opera Android\",\n safari: \"Safari\",\n safari_ios: \"Safari on iOS\",\n samsunginternet_android: \"Samsung Internet\",\n webview_android: \"WebView Android\",\n};\n\nconst FILTERS: AnyFilter[] = [\n {\n type: \"select\",\n multiple: {\n encode: (...values: string[]) => values.join(\",\"),\n decode: (value: string) => value.split(\",\"),\n },\n label: \"Browser\",\n key: \"browsers\",\n options: Object.entries(BROWSERS).map(([value, label]) => ({\n label,\n value,\n })),\n },\n {\n type: \"select\",\n multiple: {\n encode: (...values: string[]) => values.join(\",\"),\n decode: (value: string) => value.split(\",\"),\n },\n label: \"Category\",\n key: \"category\",\n options: Object.entries(CATEGORY_TO_NAME)\n .sort(([, a], [, b]) => a.localeCompare(b))\n .map(([value, label]) => ({\n label,\n value,\n })),\n },\n {\n type: \"select\",\n label: \"Collections\",\n key: \"collections\",\n multiple: {\n encode: (...values: string[]) => values.join(\",\"),\n decode: (value: string) => value.split(\",\"),\n },\n options: [],\n },\n];\n\nconst SORTS: AnySort[] = [\n {\n label: \"Newest\",\n param: \"sort=desc\",\n isDefault: true,\n },\n {\n label: \"Oldest\",\n param: \"sort=asc\",\n },\n];\n\nexport default function Updates() {\n return <UpdatesLayout />;\n}\n\nconst useFilters = (canFilter: boolean) => {\n const [filters, setFilters] = useState(FILTERS);\n const { data, isLoading, error } = useCollections();\n useEffect(() => {\n if (!isLoading && data?.length && !error) {\n setFilters((old) =>\n old.map((val) => {\n if (val.key === \"collections\") {\n return {\n ...val,\n options: data\n ?.filter((collection) => collection.article_count > 0)\n .map((info) => {\n const label =\n info.name === \"Default\" ? \"Saved Articles\" : info.name;\n return {\n label,\n value: info.id,\n };\n }),\n };\n } else {\n return val;\n }\n })\n );\n }\n }, [isLoading, canFilter, data, error]);\n return filters;\n};\n\nfunction UpdatesLayout() {\n document.title = `Updates | ${MDN_PLUS_TITLE}`;\n useScrollToTop();\n const user = useUserData();\n const { data, error } = useUpdates();\n const gleanClick = useGleanClick();\n const [searchParams, setSearchParams] = useSearchParams();\n const { setViewed } = useViewedState();\n useEffect(() => setViewed(FeatureId.PLUS_UPDATES_V2));\n\n const hasFilters = [...searchParams.keys()].some((key) => key !== \"page\");\n\n const canFilter = user?.isAuthenticated === true;\n const filters = useFilters(canFilter);\n\n return (\n <div className=\"updates\">\n <header className=\"plus-header-mandala\">\n <Container>\n <h1>\n <div className=\"mandala-icon-wrapper\">\n <Mandala />\n <Icon name=\"bell-filled\" />\n </div>\n <span>Updates</span>\n </h1>\n <p>\n Stay up-to-date with the latest browser features.\n <br />\n <a\n href=\"https://survey.alchemer.com/s3/7149796/MDN-BCD-Updates\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className=\"external\"\n >\n We'd love to hear your feedback!\n </a>\n </p>\n </Container>\n </header>\n <Container>\n {canFilter && (\n <SearchFilter\n filters={filters}\n sorts={SORTS}\n isDisabled={!canFilter}\n onChange={(key, newValue, oldValue) =>\n gleanClick(\n `${PLUS_UPDATES.FILTER_CHANGE}_${key}: ${\n oldValue ?? \"(default)\"\n } -> ${newValue ?? \"(default)\"}`\n )\n }\n />\n )}\n\n {canFilter && hasFilters && (\n <Button\n type=\"action\"\n extraClasses=\"reset-filters\"\n onClickHandler={() => setSearchParams(\"\")}\n >\n Reset all filters\n </Button>\n )}\n\n {error && <DataError error={error} />}\n\n {data ? (\n <>\n {data.data.length ? (\n data.data.map((group) => (\n <GroupComponent\n key={group.browser + group.version}\n group={group}\n />\n ))\n ) : (\n <div className=\"notecard\">\n {hasFilters\n ? \"No updates match your filters.\"\n : \"No updates found.\"}\n </div>\n )}\n <Paginator\n last={data.last}\n onChange={(page, oldPage) =>\n gleanClick(`${PLUS_UPDATES.PAGE_CHANGE}: ${oldPage} -> ${page}`)\n }\n />\n </>\n ) : (\n <Loading />\n )}\n </Container>\n </div>\n );\n}\n\nfunction GroupComponent({ group }: { group: Group }) {\n const { release_date, events, browser, version, name } = group;\n const length = events.added.length + events.removed.length;\n const metadata = {\n icon: browserToIconName(browser),\n title: `${name} ${version}`,\n };\n\n const allEvents = [\n ...events.added.map((e) => ({ status: \"added\", ...e })),\n ...events.removed.map((e) => ({ status: \"removed\", ...e })),\n ].sort((a, b) => a.path.localeCompare(b.path)) as EventWithStatus[];\n\n return metadata ? (\n <div className=\"group\">\n <header>\n <Icon name={metadata.icon} />\n {metadata.title}\n <span className=\"number-badge\">\n {length} {length === 1 ? \"update\" : \"updates\"}\n </span>\n <time dateTime={release_date}>\n {new Date(release_date).toLocaleDateString(undefined, {\n dateStyle: \"medium\",\n })}\n </time>\n </header>\n {collapseEvents(allEvents).map((event) => (\n <EventComponent key={event.path} event={event} status={event.status} />\n ))}\n </div>\n ) : null;\n}\n\nfunction collapseEvents<T extends { path: string }>(events: T[]): T[] {\n return events.filter(\n (event) =>\n events.findIndex(\n (e) => e.path === event.path.split(\".\").slice(0, -1).join(\".\")\n ) === -1\n );\n}\n\nfunction EventComponent({ event, status }: { event: Event; status: Status }) {\n const [isOpen, setIsOpen] = useState(false);\n const [category, ...displayPath] = event.path.split(\".\");\n const engines = event.compat.engines;\n const gleanClick = useGleanClick();\n\n return (\n <details\n className={`category-${category}`}\n onToggle={({ target }) => {\n if (target instanceof HTMLDetailsElement) {\n setIsOpen(target.open);\n const source = target.open\n ? PLUS_UPDATES.EVENT_EXPAND\n : PLUS_UPDATES.EVENT_COLLAPSE;\n gleanClick(source);\n }\n }}\n >\n <summary>\n <code>{camelWrap(displayPath.join(\".\"))}</code>\n <i>{CATEGORY_TO_NAME[category]}</i>\n <EventStatus status={status} />\n {Boolean(engines.length) && (\n <span className=\"status\" title={`Supported in ${engines.join(\", \")}`}>\n <svg width=\"32\" height=\"9\" viewBox=\"0 0 32 9\" role=\"img\">\n {range(0, 3).map((n) => (\n <circle\n key={n}\n cx={4 + n * 12}\n cy=\"4.5\"\n r=\"4\"\n className={engines.length > n ? \"active\" : undefined}\n />\n ))}\n </svg>\n </span>\n )}\n <Icon name=\"chevron\" />\n </summary>\n {isOpen && <EventInnerComponent event={event} />}\n </details>\n );\n}\n\nfunction EventStatus({ status }: { status: Status }) {\n return <span className={`badge status-${status}`}>{status}</span>;\n}\n\nfunction EventInnerComponent({\n event: {\n path,\n compat: { mdn_url },\n },\n}: {\n event: Event;\n}) {\n const locale = useLocale();\n return (\n <div>\n <ArticleActions path={path} mdn_url={mdn_url} />\n <LazyCompatTable query={path} locale={locale} />\n </div>\n );\n}\n\nfunction ArticleActions({ path, mdn_url }: { path: string; mdn_url?: string }) {\n const userData = useUserData();\n const locale = useLocale();\n const url = mdn_url?.replace(\"https://developer.mozilla.org\", `/${locale}`);\n const searchUrl = `/${locale}/search?sort=relevance&locale=en-US${\n locale !== \"en-US\" ? `&locale=${locale}` : \"\"\n }&q=${encodeURIComponent(path)}`;\n const { data: doc } = useSWR<DocMetadata>(\n () => userData?.isAuthenticated && url && `${url}/metadata.json`,\n async (url) => {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n return (await response.json()) as DocMetadata;\n },\n {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n }\n );\n\n return (\n <nav>\n <Button\n type=\"action\"\n icon={url ? \"external\" : \"search\"}\n size=\"small\"\n href={url || searchUrl}\n target=\"_blank\"\n extraClasses=\"link-button\"\n >\n {url ? \"See full article\" : \"Search for article\"}\n </Button>\n {url && (\n <>\n <BookmarkMenu doc={doc} />\n </>\n )}\n </nav>\n );\n}\n\nfunction browserToIconName(browser: string) {\n if (browser.startsWith(\"firefox\")) {\n return \"simple-firefox\";\n } else if (browser === \"webview_android\") {\n return \"webview\";\n } else if (browser === \"webview_ios\") {\n return \"safari\";\n } else {\n const browserStart = browser.split(\"_\")[0];\n return browserStart;\n }\n}\n","import useSWR from \"swr\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useUserData } from \"../../user-context\";\nimport { BCD_BASE_URL } from \"../../env\";\n\nexport interface Event {\n path: string;\n compat: {\n mdn_url?: string;\n source_file: string;\n spec_url?: string[];\n status: {\n deprecated: boolean;\n experimental: boolean;\n standard_track: boolean;\n };\n engines: string[];\n };\n}\n\nexport interface Group {\n browser: string;\n version: string;\n release_date: string;\n engine: string;\n engine_version: string;\n release_notes: string[];\n status: string;\n name: string;\n events: {\n added: Event[];\n removed: Event[];\n };\n}\n\ninterface Page {\n data: Group[];\n last: number;\n}\n\nfunction composeUrl({\n isAuthenticated,\n searchParams,\n}: {\n isAuthenticated: boolean;\n searchParams: URLSearchParams;\n}): string {\n let url = \"/api/v2/updates/\";\n let params = new URLSearchParams();\n\n for (const [key, value] of searchParams.entries()) {\n switch (key) {\n case \"page\":\n params.set(key, value);\n break;\n\n case \"collections\":\n if (isAuthenticated) {\n // Different endpoint for uncached personalized data.\n url += \"collections/\";\n params.set(key, value);\n }\n break;\n\n default:\n if (isAuthenticated) {\n params.set(key, value);\n }\n break;\n }\n }\n\n if ([...params.keys()].length) {\n url += `?${params.toString()}`;\n }\n\n return url;\n}\n\nexport function useUpdates() {\n const user = useUserData();\n const [searchParams] = useSearchParams();\n\n const url = composeUrl({\n isAuthenticated: user?.isAuthenticated || false,\n searchParams,\n });\n\n return useSWR(\n url,\n async (key) => {\n const res = await fetch(key);\n if (res.ok) {\n return (await res.json()) as Page;\n }\n if (res.status === 404) {\n return;\n }\n throw new Error(`${res.status}: ${res.statusText}`);\n },\n {\n revalidateOnFocus: false,\n revalidateIfStale: false,\n revalidateOnReconnect: false,\n }\n );\n}\n\nexport function useBCD(path: string) {\n return useSWR(\n `${BCD_BASE_URL}/bcd/api/v0/current/${path}.json`,\n async (key) => {\n const res = await fetch(key);\n if (res.ok) {\n return await res.json();\n }\n if (res.status === 404) {\n return;\n }\n throw new Error(`${res.status}: ${res.statusText}`);\n },\n {\n revalidateOnFocus: false,\n revalidateIfStale: false,\n revalidateOnReconnect: false,\n }\n );\n}\n","import \"./index.scss\";\n\nexport default function Container({\n children,\n extraClasses,\n optional,\n}: {\n children: React.ReactNode;\n extraClasses?: string;\n optional?: boolean;\n}) {\n return (\n <>\n {optional === true ? (\n <>{children}</>\n ) : (\n <div className={`container ${extraClasses || \"\"}`}>{children}</div>\n )}\n </>\n );\n}\n","import { Link, useSearchParams } from \"react-router-dom\";\nimport { range } from \"../../../utils\";\n\nconst PARAM = \"page\";\n\nfunction PageLink({\n page,\n children,\n onClick,\n disabled,\n}: {\n page: number;\n children?: React.ReactNode;\n onClick?: (page: number) => unknown;\n disabled?: boolean;\n}) {\n const [searchParams, setSearchParams] = useSearchParams();\n\n return (\n <Link\n to={{}}\n className={disabled ? \"disabled\" : \"\"}\n onClick={(event) => {\n event.preventDefault();\n if (disabled) {\n return;\n }\n\n onClick && onClick(page);\n setSearchParams({\n ...Object.fromEntries(searchParams.entries()),\n [PARAM]: page.toString(),\n });\n\n window.setTimeout(() => document.documentElement.scrollTo());\n }}\n >\n {children || page}\n </Link>\n );\n}\n\nexport function Paginator({\n first = 1,\n last,\n endPadding = 2,\n middlePadding = 2,\n onChange,\n}: {\n first?: number;\n last: number;\n endPadding?: number;\n middlePadding?: number;\n onChange?: (page: number, oldPage: number) => unknown;\n}) {\n const [searchParams] = useSearchParams();\n const current = parseInt(searchParams.get(PARAM) || \"\", 10) || first;\n const middleFirst = Math.max(current - middlePadding, first);\n const middleLast = Math.min(middleFirst + middlePadding * 2 + 1, last + 1);\n const left = range(first, Math.min(endPadding, middleFirst));\n const middle = range(middleFirst, middleLast);\n const right = range(Math.max(last + 1 - endPadding, middleLast), last + 1);\n\n const onClick = (page: number) => {\n onChange && onChange(page, current);\n };\n\n if (first === last) {\n // There are no pages, so return nothing\n return <></>;\n }\n\n return (\n <div className=\"pagination\">\n <PageLink\n page={current - 1}\n onClick={onClick}\n disabled={current === first}\n >\n ← Previous\n </PageLink>\n {left.map((page) => (\n <PageLink key={page} page={page} onClick={onClick} />\n ))}\n {Boolean(left.length) && left[left.length - 1] + 1 !== middle[0] && \"…\"}\n {middle.map((page) =>\n current === page ? (\n <span className=\"current-page\" key={page}>\n {page}\n </span>\n ) : (\n <PageLink key={page} page={page} onClick={onClick} />\n )\n )}\n {Boolean(right.length) &&\n middle[middle.length - 1] + 1 !== right[0] &&\n \"…\"}\n {right.map((page) => (\n <PageLink key={page} page={page} onClick={onClick} />\n ))}\n <PageLink\n page={current + 1}\n onClick={onClick}\n disabled={current === last}\n >\n Next →\n </PageLink>\n </div>\n );\n}\n"],"names":["Search","name","isDisabled","onBlurHandler","onChangeHandler","onClickHandler","onFocusHandler","onResetHandler","placeholder","value","e","_e_currentTarget_parentElement","SearchFilter","param","filters","sorts","onChange","key","newValue","oldValue","_useSearchParams","searchParams","setSearchParams","_useState","openFilter","setOpenFilter","_useState1","isSortingOpen","setIsSortingOpen","_useState2","terms","setTerms","useEffect","_searchParams_get","replaceSearchParam","params","URLSearchParams","a","b","isDefaultFilter","_option_isDefault","option","filter","isCurrentFilter","currentValue","values","isDefaultSort","_sort_isDefault","sort","isCurrentSort","_param_split","toggleSelectedFilter","_filter_multiple","v","toggleSelectedSort","setSelectedTerms","filterMenus","Button","sortMenu","undefined","event","filterMenu","DropdownMenuWrapper","isOpen","DropdownMenu","Submenu","camelUnwrap","DataError","error","NoteCard","window","LazyCompatTable","React","CATEGORY_TO_NAME","FILTERS","Object","label","SORTS","Updates","UpdatesLayout","useFilters","canFilter","setFilters","_useCollections","data","isLoading","old","val","collection","info","document","MDN_PLUS_TITLE","useScrollToTop","user","url","useUserData","_useUpdates","composeUrl","isAuthenticated","_iteratorError","useSWR","res","fetch","Error","gleanClick","useGleanClick","setViewed","useViewedState","FeatureId","hasFilters","Container","Mandala","Icon","PLUS_UPDATES","group","GroupComponent","Paginator","page","oldPage","Loading","browser","events","release_date","version","length","metadata","allEvents","Date","collapseEvents","EventComponent","status","setIsOpen","_event_path_split","category","displayPath","engines","target","HTMLDetailsElement","camelWrap","EventStatus","Boolean","range","n","EventInnerComponent","path","mdn_url","locale","useLocale","ArticleActions","userData","searchUrl","encodeURIComponent","doc","_useSWR","response","BookmarkMenu","children","extraClasses","optional","PARAM","PageLink","onClick","disabled","Link","first","last","endPadding","middlePadding","current","parseInt","middleFirst","Math","middleLast","left","middle","right"],"mappings":"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"}
1
+ {"version":3,"file":"7827.efd03057dbb6c884.js","sources":["webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/ui/atoms/search/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/search-filter/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/common/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/updates/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/plus/updates/api.ts","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/ui/atoms/container/index.tsx","webpack://@mdn/fred/./node_modules/@mdn/yari/client/src/ui/molecules/paginator/index.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport \"./index.scss\";\n\ntype SearchProps = {\n name: string;\n placeholder?: string;\n value?: string;\n isDisabled?: boolean;\n onBlurHandler?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onChangeHandler?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onClickHandler?: (event: React.MouseEvent<Element>) => void;\n onFocusHandler?: (event: React.FocusEvent<Element>) => void;\n onResetHandler?: () => void;\n};\n\nexport const Search = ({\n name,\n isDisabled = false,\n onBlurHandler,\n onChangeHandler,\n onClickHandler,\n onFocusHandler,\n onResetHandler,\n placeholder,\n value,\n}: SearchProps) => {\n return (\n <div className=\"search-form search-widget\">\n <input\n type=\"search\"\n className=\"search-input-field\"\n name={name}\n placeholder={placeholder}\n value={value}\n disabled={isDisabled}\n onBlur={(e) =>\n onBlurHandler &&\n !e.currentTarget.parentElement?.contains(e.relatedTarget) &&\n onBlurHandler(e)\n }\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n />\n\n {onResetHandler && (\n <button\n type=\"button\"\n className=\"button action has-icon clear-search-button\"\n onClick={onResetHandler}\n >\n <span className=\"button-wrap\">\n <span className=\"icon icon-cancel\"></span>\n <span className=\"visually-hidden\">Clear search input</span>\n </span>\n </button>\n )}\n\n <button\n type=\"submit\"\n disabled={isDisabled}\n className=\"button action has-icon search-button search-filter-button\"\n >\n <span className=\"button-wrap\">\n <span className=\"icon icon-search\"></span>\n <span className=\"visually-hidden\">Search</span>\n </span>\n </button>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport { Button } from \"../../ui/atoms/button\";\nimport { Search } from \"../../ui/atoms/search\";\nimport { Submenu } from \"../../ui/molecules/submenu\";\n\nimport \"./index.scss\";\nimport { DropdownMenu, DropdownMenuWrapper } from \"../../ui/molecules/dropdown\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { camelUnwrap } from \"../../utils\";\n\nexport type AnyFilter = SelectFilter;\n\ntype SelectFilter = {\n type: \"select\";\n key: string;\n label: string;\n multiple?: {\n encode: (...values: string[]) => string;\n decode: (value: string) => string[];\n };\n options: {\n label: string;\n value: string;\n isDefault?: true;\n }[];\n};\n\nexport type AnySort = { label: string; param: string; isDefault?: true };\n\nenum Params {\n PAGE = \"page\",\n QUERY = \"q\",\n}\n\nexport default function SearchFilter({\n isDisabled = false,\n filters = [],\n sorts = [],\n onChange = (key, newValue, oldValue) => {},\n}: {\n isDisabled?: boolean;\n filters?: AnyFilter[];\n sorts?: AnySort[];\n onChange?: (\n key: string,\n newValue: string | null,\n oldValue: string | null\n ) => unknown;\n}) {\n const [searchParams, setSearchParams] = useSearchParams();\n\n const [openFilter, setOpenFilter] = useState<string | null>(null);\n const [isSortingOpen, setIsSortingOpen] = useState<boolean>(false);\n const [terms, setTerms] = useState<string>(\"\");\n\n useEffect(\n () => setTerms(searchParams.get(Params.QUERY) ?? \"\"),\n [searchParams]\n );\n\n const sortedParams = (params: URLSearchParams): URLSearchParams =>\n new URLSearchParams(\n [...params.entries()].sort(([a], [b]) => a.localeCompare(b))\n );\n\n const replaceSearchParam = (key: string, value: string | null) => {\n setSearchParams((params) => {\n const oldValue = params.get(key);\n if (value) {\n params.set(key, value);\n } else {\n params.delete(key);\n }\n onChange(key, value, oldValue);\n params.delete(Params.PAGE);\n return sortedParams(params);\n });\n };\n\n const isDefaultFilter = (key: string, value: string) => {\n const filter = filters.find((filter) => filter.key === key) as AnyFilter;\n const option = filter.options.find((option) => option.value === value);\n return option?.isDefault ?? false;\n };\n\n const isCurrentFilter = (key: string, value: string) => {\n const currentValue = searchParams.get(key) ?? null;\n const filter = filters.find((filter) => filter.key === key) as AnyFilter;\n\n if (filter.multiple) {\n const values =\n typeof currentValue === \"string\"\n ? filter.multiple.decode(currentValue)\n : [];\n return values.includes(value);\n } else {\n return currentValue\n ? currentValue === value\n : isDefaultFilter(key, value);\n }\n };\n\n const isDefaultSort = (param: string) => {\n const sort = sorts.find((sort) => sort.param === param);\n return sort?.isDefault ?? false;\n };\n\n const isCurrentSort = (param: string) => {\n const [key, value] = param.split(\"=\", 2);\n const currentValue = searchParams.get(key) ?? null;\n return currentValue ? currentValue === value : isDefaultSort(param);\n };\n\n const toggleSelectedFilter = (key: string, value: string) => {\n const currentValue = searchParams.get(key) ?? null;\n const filter = filters.find((filter) => filter.key === key) as AnyFilter;\n let newValue: string | null;\n\n if (filter.multiple) {\n let values =\n typeof currentValue === \"string\"\n ? filter.multiple.decode(currentValue)\n : [];\n if (values.includes(value)) {\n values = values.filter((v) => v !== value);\n } else {\n values = [...values, value].sort();\n }\n if (values.length) {\n newValue = filter.multiple.encode(...values);\n } else {\n newValue = null;\n }\n } else if (isDefaultFilter(key, value)) {\n newValue = null;\n } else {\n newValue = currentValue !== value ? value : null;\n }\n\n replaceSearchParam(key, newValue);\n };\n\n const toggleSelectedSort = (param: string) => {\n const [key, value] = param.split(\"=\", 2);\n const newValue = isDefaultSort(param) ? \"\" : value;\n\n replaceSearchParam(key, newValue);\n };\n\n const setSelectedTerms = (newValue: string) => {\n replaceSearchParam(\"q\", newValue);\n };\n\n const filterMenus = filters.map((filter) => ({\n key: filter.key,\n label: filter.label,\n id: `filters-menu-${filter.key}`,\n items: filter.options.map((option) => ({\n component: () => (\n <Button\n isDisabled={isDisabled}\n type=\"action\"\n extraClasses={\n isCurrentFilter(filter.key, option.value) ? \"active-menu-item\" : \"\"\n }\n onClickHandler={() => {\n toggleSelectedFilter(filter.key, option.value);\n }}\n >\n {option.label}\n </Button>\n ),\n })),\n }));\n\n const sortMenu = {\n label: \"Sort\",\n id: \"sort-menu\",\n items: sorts.map((sort) => ({\n component: () => (\n <Button\n isDisabled={isDisabled}\n type=\"action\"\n extraClasses={isCurrentSort(sort.param) ? \"active-menu-item\" : \"\"}\n onClickHandler={() => toggleSelectedSort(sort.param)}\n >\n {sort.label}\n </Button>\n ),\n })),\n };\n\n return (\n <form\n className={`search-filter ${\n !filters.length ? \"inline-on-mobile\" : undefined\n }`}\n onSubmit={(event: React.FormEvent) => {\n event.preventDefault();\n setSelectedTerms(terms);\n }}\n >\n {filterMenus.map((filterMenu) => (\n <DropdownMenuWrapper\n key={filterMenu.key}\n className=\"search-filter-category search-filter-filters\"\n isOpen={openFilter === filterMenu.key}\n setIsOpen={(isOpen: boolean) =>\n setOpenFilter(isOpen ? filterMenu.key : null)\n }\n >\n <Button\n type=\"select\"\n aria-controls={filterMenu.id}\n aria-haspopup={\"menu\"}\n aria-expanded={openFilter === filterMenu.key}\n extraClasses={`${\n searchParams.get(filterMenu.key) ? \"active\" : \"\"\n } ${isDisabled ? \"inactive\" : \"\"}`}\n onClickHandler={() =>\n setOpenFilter(\n openFilter === filterMenu.key ? null : filterMenu.key\n )\n }\n isDisabled={filterMenu.items.length === 0}\n >\n {filterMenu.label}\n </Button>\n <DropdownMenu>\n <Submenu\n submenuId={filterMenu.id}\n menuEntry={filterMenu}\n isDropdown\n />\n </DropdownMenu>\n </DropdownMenuWrapper>\n ))}\n\n <Search\n isDisabled={isDisabled}\n name=\"terms\"\n placeholder=\"Filter by keyword\"\n value={terms}\n onBlurHandler={() =>\n // The updates event list uses `camelWrap()` to insert\n // zero-width spaces, so we `camelUnwrap()` them here.\n // Otherwise we would not find a copy-pasted feature.\n setSelectedTerms(camelUnwrap(terms))\n }\n onChangeHandler={(e) => setTerms(e.target.value)}\n onResetHandler={() => {\n setTerms(\"\");\n setSelectedTerms(\"\");\n }}\n />\n\n {sorts.length ? (\n <DropdownMenuWrapper\n className=\"search-filter-category search-filter-sorts\"\n isOpen={isSortingOpen}\n setIsOpen={setIsSortingOpen}\n >\n <Button\n type=\"select\"\n aria-controls={sortMenu.id}\n aria-haspopup={\"menu\"}\n aria-expanded={isSortingOpen || undefined}\n extraClasses={`${searchParams.get(\"sort\") ? \"active\" : \"\"} ${\n isDisabled ? \"inactive\" : \"\"\n }`}\n onClickHandler={() => {\n setIsSortingOpen(!isSortingOpen);\n }}\n >\n {sortMenu.label}\n </Button>\n <DropdownMenu>\n <Submenu submenuId={sortMenu.id} menuEntry={sortMenu} isDropdown />\n </DropdownMenu>\n </DropdownMenuWrapper>\n ) : null}\n </form>\n );\n}\n","import LogInLink from \"../../ui/atoms/login-link\";\nimport NoteCard from \"../../ui/molecules/notecards\";\nimport { getCategoryByPathname } from \"../../utils\";\n\nexport function NotSignedIn() {\n return (\n <div className=\"container\">\n <h3>You have not signed in</h3>\n <LogInLink />\n </div>\n );\n}\n\nexport function NotSubscriber() {\n return (\n <>\n <h2>You are signed in but not an active subscriber</h2>\n <LogInLink />\n </>\n );\n}\n\nexport function DataError({ error }: { error: Error }) {\n return (\n <NoteCard type=\"negative\">\n <h3>Server error</h3>\n <p>A server error occurred trying to get your collections.</p>\n <p>\n <code>{error.toString()}</code>\n </p>\n <a href={window.location.pathname}>Reload this page and try again.</a>\n </NoteCard>\n );\n}\n\nexport function _getIconLabel(url: string) {\n const category = getCategoryByPathname(url);\n\n if (!category) {\n return \"docs\";\n }\n\n if (category === \"javascript\") {\n return \"js\";\n }\n\n if (category === \"accessibility\") {\n return \"acc\";\n }\n\n return category;\n}\n","import Container from \"../../ui/atoms/container\";\n\nimport useSWR from \"swr\";\nimport { DocMetadata } from \"../../../../libs/types/document\";\nimport { FeatureId, MDN_PLUS_TITLE } from \"../../constants\";\nimport { useLocale, useScrollToTop, useViewedState } from \"../../hooks\";\nimport { Button } from \"../../ui/atoms/button\";\nimport { Icon } from \"../../ui/atoms/icon\";\nimport { Loading } from \"../../ui/atoms/loading\";\nimport Mandala from \"../../ui/molecules/mandala\";\nimport { Paginator } from \"../../ui/molecules/paginator\";\nimport BookmarkMenu from \"../../ui/organisms/article-actions/bookmark-menu\";\nimport { useUserData } from \"../../user-context\";\nimport { camelWrap, range } from \"../../utils\";\nimport { Event, Group, useUpdates } from \"./api\";\nimport \"./index.scss\";\nimport { useGleanClick } from \"../../telemetry/glean-context\";\nimport { PLUS_UPDATES } from \"../../telemetry/constants\";\nimport SearchFilter, { AnyFilter, AnySort } from \"../search-filter\";\nimport { useEffect, useState } from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { DataError } from \"../common\";\nimport { useCollections } from \"../collections/api\";\nimport React from \"react\";\n\nconst LazyCompatTable = React.lazy(\n () => import(\"../../lit/compat/lazy-compat-table.js\")\n);\n\ntype EventWithStatus = Event & { status: Status };\ntype Status = \"added\" | \"removed\";\n\nconst CATEGORY_TO_NAME = {\n api: \"Web APIs\",\n css: \"CSS\",\n html: \"HTML\",\n http: \"HTTP\",\n javascript: \"JavaScript\",\n mathml: \"MathML\",\n svg: \"SVG\",\n webdriver: \"WebDriver\",\n webextensions: \"Web Extensions\",\n};\n\n// At some point, these should come from the API\n// or from @mdn/browser-compat-data directly.\nconst BROWSERS = {\n chrome: \"Chrome\",\n chrome_android: \"Chrome Android\",\n deno: \"Deno\",\n edge: \"Edge\",\n firefox: \"Firefox\",\n firefox_android: \"Firefox for Android\",\n ie: \"Internet Explorer\",\n nodejs: \"Node.js\",\n opera: \"Opera\",\n opera_android: \"Opera Android\",\n safari: \"Safari\",\n safari_ios: \"Safari on iOS\",\n samsunginternet_android: \"Samsung Internet\",\n webview_android: \"WebView Android\",\n};\n\nconst FILTERS: AnyFilter[] = [\n {\n type: \"select\",\n multiple: {\n encode: (...values: string[]) => values.join(\",\"),\n decode: (value: string) => value.split(\",\"),\n },\n label: \"Browser\",\n key: \"browsers\",\n options: Object.entries(BROWSERS).map(([value, label]) => ({\n label,\n value,\n })),\n },\n {\n type: \"select\",\n multiple: {\n encode: (...values: string[]) => values.join(\",\"),\n decode: (value: string) => value.split(\",\"),\n },\n label: \"Category\",\n key: \"category\",\n options: Object.entries(CATEGORY_TO_NAME)\n .sort(([, a], [, b]) => a.localeCompare(b))\n .map(([value, label]) => ({\n label,\n value,\n })),\n },\n {\n type: \"select\",\n label: \"Collections\",\n key: \"collections\",\n multiple: {\n encode: (...values: string[]) => values.join(\",\"),\n decode: (value: string) => value.split(\",\"),\n },\n options: [],\n },\n];\n\nconst SORTS: AnySort[] = [\n {\n label: \"Newest\",\n param: \"sort=desc\",\n isDefault: true,\n },\n {\n label: \"Oldest\",\n param: \"sort=asc\",\n },\n];\n\nexport default function Updates() {\n return <UpdatesLayout />;\n}\n\nconst useFilters = (canFilter: boolean) => {\n const [filters, setFilters] = useState(FILTERS);\n const { data, isLoading, error } = useCollections();\n useEffect(() => {\n if (!isLoading && data?.length && !error) {\n setFilters((old) =>\n old.map((val) => {\n if (val.key === \"collections\") {\n return {\n ...val,\n options: data\n ?.filter((collection) => collection.article_count > 0)\n .map((info) => {\n const label =\n info.name === \"Default\" ? \"Saved Articles\" : info.name;\n return {\n label,\n value: info.id,\n };\n }),\n };\n } else {\n return val;\n }\n })\n );\n }\n }, [isLoading, canFilter, data, error]);\n return filters;\n};\n\nfunction UpdatesLayout() {\n document.title = `Updates | ${MDN_PLUS_TITLE}`;\n useScrollToTop();\n const user = useUserData();\n const { data, error } = useUpdates();\n const gleanClick = useGleanClick();\n const [searchParams, setSearchParams] = useSearchParams();\n const { setViewed } = useViewedState();\n useEffect(() => setViewed(FeatureId.PLUS_UPDATES_V2));\n\n const hasFilters = [...searchParams.keys()].some((key) => key !== \"page\");\n\n const canFilter = user?.isAuthenticated === true;\n const filters = useFilters(canFilter);\n\n return (\n <div className=\"updates\">\n <header className=\"plus-header-mandala\">\n <Container>\n <h1>\n <div className=\"mandala-icon-wrapper\">\n <Mandala />\n <Icon name=\"bell-filled\" />\n </div>\n <span>Updates</span>\n </h1>\n <p>\n Stay up-to-date with the latest browser features.\n <br />\n <a\n href=\"https://survey.alchemer.com/s3/7149796/MDN-BCD-Updates\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className=\"external\"\n >\n We'd love to hear your feedback!\n </a>\n </p>\n </Container>\n </header>\n <Container>\n {canFilter && (\n <SearchFilter\n filters={filters}\n sorts={SORTS}\n isDisabled={!canFilter}\n onChange={(key, newValue, oldValue) =>\n gleanClick(\n `${PLUS_UPDATES.FILTER_CHANGE}_${key}: ${\n oldValue ?? \"(default)\"\n } -> ${newValue ?? \"(default)\"}`\n )\n }\n />\n )}\n\n {canFilter && hasFilters && (\n <Button\n type=\"action\"\n extraClasses=\"reset-filters\"\n onClickHandler={() => setSearchParams(\"\")}\n >\n Reset all filters\n </Button>\n )}\n\n {error && <DataError error={error} />}\n\n {data ? (\n <>\n {data.data.length ? (\n data.data.map((group) => (\n <GroupComponent\n key={group.browser + group.version}\n group={group}\n />\n ))\n ) : (\n <div className=\"notecard\">\n {hasFilters\n ? \"No updates match your filters.\"\n : \"No updates found.\"}\n </div>\n )}\n <Paginator\n last={data.last}\n onChange={(page, oldPage) =>\n gleanClick(`${PLUS_UPDATES.PAGE_CHANGE}: ${oldPage} -> ${page}`)\n }\n />\n </>\n ) : (\n <Loading />\n )}\n </Container>\n </div>\n );\n}\n\nfunction GroupComponent({ group }: { group: Group }) {\n const { release_date, events, browser, version, name } = group;\n const length = events.added.length + events.removed.length;\n const metadata = {\n icon: browserToIconName(browser),\n title: `${name} ${version}`,\n };\n\n const allEvents = [\n ...events.added.map((e) => ({ status: \"added\", ...e })),\n ...events.removed.map((e) => ({ status: \"removed\", ...e })),\n ].sort((a, b) => a.path.localeCompare(b.path)) as EventWithStatus[];\n\n return metadata ? (\n <div className=\"group\">\n <header>\n <Icon name={metadata.icon} />\n {metadata.title}\n <span className=\"number-badge\">\n {length} {length === 1 ? \"update\" : \"updates\"}\n </span>\n <time dateTime={release_date}>\n {new Date(release_date).toLocaleDateString(undefined, {\n dateStyle: \"medium\",\n })}\n </time>\n </header>\n {collapseEvents(allEvents).map((event) => (\n <EventComponent key={event.path} event={event} status={event.status} />\n ))}\n </div>\n ) : null;\n}\n\nfunction collapseEvents<T extends { path: string }>(events: T[]): T[] {\n return events.filter(\n (event) =>\n events.findIndex(\n (e) => e.path === event.path.split(\".\").slice(0, -1).join(\".\")\n ) === -1\n );\n}\n\nfunction EventComponent({ event, status }: { event: Event; status: Status }) {\n const [isOpen, setIsOpen] = useState(false);\n const [category, ...displayPath] = event.path.split(\".\");\n const engines = event.compat.engines;\n const gleanClick = useGleanClick();\n\n return (\n <details\n className={`category-${category}`}\n onToggle={({ target }) => {\n if (target instanceof HTMLDetailsElement) {\n setIsOpen(target.open);\n const source = target.open\n ? PLUS_UPDATES.EVENT_EXPAND\n : PLUS_UPDATES.EVENT_COLLAPSE;\n gleanClick(source);\n }\n }}\n >\n <summary>\n <code>{camelWrap(displayPath.join(\".\"))}</code>\n <i>{CATEGORY_TO_NAME[category]}</i>\n <EventStatus status={status} />\n {Boolean(engines.length) && (\n <span className=\"status\" title={`Supported in ${engines.join(\", \")}`}>\n <svg width=\"32\" height=\"9\" viewBox=\"0 0 32 9\" role=\"img\">\n {range(0, 3).map((n) => (\n <circle\n key={n}\n cx={4 + n * 12}\n cy=\"4.5\"\n r=\"4\"\n className={engines.length > n ? \"active\" : undefined}\n />\n ))}\n </svg>\n </span>\n )}\n <Icon name=\"chevron\" />\n </summary>\n {isOpen && <EventInnerComponent event={event} />}\n </details>\n );\n}\n\nfunction EventStatus({ status }: { status: Status }) {\n return <span className={`badge status-${status}`}>{status}</span>;\n}\n\nfunction EventInnerComponent({\n event: {\n path,\n compat: { mdn_url },\n },\n}: {\n event: Event;\n}) {\n const locale = useLocale();\n return (\n <div>\n <ArticleActions path={path} mdn_url={mdn_url} />\n <LazyCompatTable query={path} locale={locale} />\n </div>\n );\n}\n\nfunction ArticleActions({ path, mdn_url }: { path: string; mdn_url?: string }) {\n const userData = useUserData();\n const locale = useLocale();\n const url = mdn_url?.replace(\"https://developer.mozilla.org\", `/${locale}`);\n const searchUrl = `/${locale}/search?sort=relevance&locale=en-US${\n locale !== \"en-US\" ? `&locale=${locale}` : \"\"\n }&q=${encodeURIComponent(path)}`;\n const { data: doc } = useSWR<DocMetadata>(\n () => userData?.isAuthenticated && url && `${url}/metadata.json`,\n async (url) => {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n return (await response.json()) as DocMetadata;\n },\n {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n }\n );\n\n return (\n <nav>\n <Button\n type=\"action\"\n icon={url ? \"external\" : \"search\"}\n size=\"small\"\n href={url || searchUrl}\n target=\"_blank\"\n extraClasses=\"link-button\"\n >\n {url ? \"See full article\" : \"Search for article\"}\n </Button>\n {url && (\n <>\n <BookmarkMenu doc={doc} />\n </>\n )}\n </nav>\n );\n}\n\nfunction browserToIconName(browser: string) {\n if (browser.startsWith(\"firefox\")) {\n return \"simple-firefox\";\n } else if (browser === \"webview_android\") {\n return \"webview\";\n } else if (browser === \"webview_ios\") {\n return \"safari\";\n } else {\n const browserStart = browser.split(\"_\")[0];\n return browserStart;\n }\n}\n","import useSWR from \"swr\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useUserData } from \"../../user-context\";\nimport { BCD_BASE_URL } from \"../../env\";\n\nexport interface Event {\n path: string;\n compat: {\n mdn_url?: string;\n source_file: string;\n spec_url?: string[];\n status: {\n deprecated: boolean;\n experimental: boolean;\n standard_track: boolean;\n };\n engines: string[];\n };\n}\n\nexport interface Group {\n browser: string;\n version: string;\n release_date: string;\n engine: string;\n engine_version: string;\n release_notes: string[];\n status: string;\n name: string;\n events: {\n added: Event[];\n removed: Event[];\n };\n}\n\ninterface Page {\n data: Group[];\n last: number;\n}\n\nfunction composeUrl({\n isAuthenticated,\n searchParams,\n}: {\n isAuthenticated: boolean;\n searchParams: URLSearchParams;\n}): string {\n let url = \"/api/v2/updates/\";\n let params = new URLSearchParams();\n\n for (const [key, value] of searchParams.entries()) {\n switch (key) {\n case \"page\":\n params.set(key, value);\n break;\n\n case \"collections\":\n if (isAuthenticated) {\n // Different endpoint for uncached personalized data.\n url += \"collections/\";\n params.set(key, value);\n }\n break;\n\n default:\n if (isAuthenticated) {\n params.set(key, value);\n }\n break;\n }\n }\n\n if ([...params.keys()].length) {\n url += `?${params.toString()}`;\n }\n\n return url;\n}\n\nexport function useUpdates() {\n const user = useUserData();\n const [searchParams] = useSearchParams();\n\n const url = composeUrl({\n isAuthenticated: user?.isAuthenticated || false,\n searchParams,\n });\n\n return useSWR(\n url,\n async (key) => {\n const res = await fetch(key);\n if (res.ok) {\n return (await res.json()) as Page;\n }\n if (res.status === 404) {\n return;\n }\n throw new Error(`${res.status}: ${res.statusText}`);\n },\n {\n revalidateOnFocus: false,\n revalidateIfStale: false,\n revalidateOnReconnect: false,\n }\n );\n}\n\nexport function useBCD(path: string) {\n return useSWR(\n `${BCD_BASE_URL}/bcd/api/v0/current/${path}.json`,\n async (key) => {\n const res = await fetch(key);\n if (res.ok) {\n return await res.json();\n }\n if (res.status === 404) {\n return;\n }\n throw new Error(`${res.status}: ${res.statusText}`);\n },\n {\n revalidateOnFocus: false,\n revalidateIfStale: false,\n revalidateOnReconnect: false,\n }\n );\n}\n","import \"./index.scss\";\n\nexport default function Container({\n children,\n extraClasses,\n optional,\n}: {\n children: React.ReactNode;\n extraClasses?: string;\n optional?: boolean;\n}) {\n return (\n <>\n {optional === true ? (\n <>{children}</>\n ) : (\n <div className={`container ${extraClasses || \"\"}`}>{children}</div>\n )}\n </>\n );\n}\n","import { Link, useSearchParams } from \"react-router-dom\";\nimport { range } from \"../../../utils\";\n\nconst PARAM = \"page\";\n\nfunction PageLink({\n page,\n children,\n onClick,\n disabled,\n}: {\n page: number;\n children?: React.ReactNode;\n onClick?: (page: number) => unknown;\n disabled?: boolean;\n}) {\n const [searchParams, setSearchParams] = useSearchParams();\n\n return (\n <Link\n to={{}}\n className={disabled ? \"disabled\" : \"\"}\n onClick={(event) => {\n event.preventDefault();\n if (disabled) {\n return;\n }\n\n onClick && onClick(page);\n setSearchParams({\n ...Object.fromEntries(searchParams.entries()),\n [PARAM]: page.toString(),\n });\n\n window.setTimeout(() => document.documentElement.scrollTo());\n }}\n >\n {children || page}\n </Link>\n );\n}\n\nexport function Paginator({\n first = 1,\n last,\n endPadding = 2,\n middlePadding = 2,\n onChange,\n}: {\n first?: number;\n last: number;\n endPadding?: number;\n middlePadding?: number;\n onChange?: (page: number, oldPage: number) => unknown;\n}) {\n const [searchParams] = useSearchParams();\n const current = parseInt(searchParams.get(PARAM) || \"\", 10) || first;\n const middleFirst = Math.max(current - middlePadding, first);\n const middleLast = Math.min(middleFirst + middlePadding * 2 + 1, last + 1);\n const left = range(first, Math.min(endPadding, middleFirst));\n const middle = range(middleFirst, middleLast);\n const right = range(Math.max(last + 1 - endPadding, middleLast), last + 1);\n\n const onClick = (page: number) => {\n onChange && onChange(page, current);\n };\n\n if (first === last) {\n // There are no pages, so return nothing\n return <></>;\n }\n\n return (\n <div className=\"pagination\">\n <PageLink\n page={current - 1}\n onClick={onClick}\n disabled={current === first}\n >\n ← Previous\n </PageLink>\n {left.map((page) => (\n <PageLink key={page} page={page} onClick={onClick} />\n ))}\n {Boolean(left.length) && left[left.length - 1] + 1 !== middle[0] && \"…\"}\n {middle.map((page) =>\n current === page ? (\n <span className=\"current-page\" key={page}>\n {page}\n </span>\n ) : (\n <PageLink key={page} page={page} onClick={onClick} />\n )\n )}\n {Boolean(right.length) &&\n middle[middle.length - 1] + 1 !== right[0] &&\n \"…\"}\n {right.map((page) => (\n <PageLink key={page} page={page} onClick={onClick} />\n ))}\n <PageLink\n page={current + 1}\n onClick={onClick}\n disabled={current === last}\n >\n Next →\n </PageLink>\n </div>\n );\n}\n"],"names":["Search","name","isDisabled","onBlurHandler","onChangeHandler","onClickHandler","onFocusHandler","onResetHandler","placeholder","value","e","_e_currentTarget_parentElement","SearchFilter","param","filters","sorts","onChange","key","newValue","oldValue","_useSearchParams","searchParams","setSearchParams","_useState","openFilter","setOpenFilter","_useState1","isSortingOpen","setIsSortingOpen","_useState2","terms","setTerms","useEffect","_searchParams_get","replaceSearchParam","params","URLSearchParams","a","b","isDefaultFilter","_option_isDefault","option","filter","isCurrentFilter","currentValue","values","isDefaultSort","_sort_isDefault","sort","isCurrentSort","_param_split","toggleSelectedFilter","_filter_multiple","v","toggleSelectedSort","setSelectedTerms","filterMenus","Button","sortMenu","undefined","event","filterMenu","DropdownMenuWrapper","isOpen","DropdownMenu","Submenu","camelUnwrap","DataError","error","NoteCard","window","LazyCompatTable","React","CATEGORY_TO_NAME","FILTERS","Object","label","SORTS","Updates","UpdatesLayout","useFilters","canFilter","setFilters","_useCollections","data","isLoading","old","val","collection","info","document","MDN_PLUS_TITLE","useScrollToTop","user","url","useUserData","_useUpdates","composeUrl","isAuthenticated","_iteratorError","useSWR","res","fetch","Error","gleanClick","useGleanClick","setViewed","useViewedState","FeatureId","hasFilters","Container","Mandala","Icon","PLUS_UPDATES","group","GroupComponent","Paginator","page","oldPage","Loading","browser","events","release_date","version","length","metadata","allEvents","Date","collapseEvents","EventComponent","status","setIsOpen","_event_path_split","category","displayPath","engines","target","HTMLDetailsElement","camelWrap","EventStatus","Boolean","range","n","EventInnerComponent","path","mdn_url","locale","useLocale","ArticleActions","userData","searchUrl","encodeURIComponent","doc","_useSWR","response","BookmarkMenu","children","extraClasses","optional","PARAM","PageLink","onClick","disabled","Link","first","last","endPadding","middlePadding","current","parseInt","middleFirst","Math","middleLast","left","middle","right"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const __webpack_id__="8183";export const __webpack_ids__=["8183"];export const __webpack_modules__={25572:function(e){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",a="week",l="month",o="quarter",c="year",i="date",u="Invalid Date",s=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},f="en",h={};h[f]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};var p="$isDayjsObject",E=function(e){return e instanceof g||!(!e||!e[p])},y=function e(t,n,r){var a;if(!t)return f;if("string"==typeof t){var l=t.toLowerCase();h[l]&&(a=l),n&&(h[l]=n,a=l);var o=t.split("-");if(!a&&o.length>1)return e(o[0])}else{var c=t.name;h[c]=t,a=c}return!r&&a&&(f=a),a||!r&&f},v=function(e,t){if(E(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new g(n)},b={s:m,z:function(e){var t=-e.utcOffset(),n=Math.abs(t);return(t<=0?"+":"-")+m(Math.floor(n/60),2,"0")+":"+m(n%60,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),a=t.clone().add(r,l),o=n-a<0,c=t.clone().add(r+(o?-1:1),l);return+(-(r+(n-a)/(o?a-c:c-a))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(u){return({M:l,y:c,w:a,d:"day",D:i,h:r,m:n,s:t,ms:e,Q:o})[u]||String(u||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};b.l=y,b.i=E,b.w=function(e,t){return v(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var g=function(){function m(e){this.$L=y(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[p]=!0}var f=m.prototype;return f.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(s);if(r){var a=r[2]-1||0,l=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,l)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,l)}}return new Date(t)}(e),this.init()},f.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},f.$utils=function(){return b},f.isValid=function(){return this.$d.toString()!==u},f.isSame=function(e,t){var n=v(e);return this.startOf(t)<=n&&n<=this.endOf(t)},f.isAfter=function(e,t){return v(e)<this.startOf(t)},f.isBefore=function(e,t){return this.endOf(t)<v(e)},f.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},f.unix=function(){return Math.floor(this.valueOf()/1e3)},f.valueOf=function(){return this.$d.getTime()},f.startOf=function(e,o){var u=this,s=!!b.u(o)||o,d=b.p(e),m=function(e,t){var n=b.w(u.$u?Date.UTC(u.$y,t,e):new Date(u.$y,t,e),u);return s?n:n.endOf("day")},f=function(e,t){return b.w(u.toDate()[e].apply(u.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),u)},h=this.$W,p=this.$M,E=this.$D,y="set"+(this.$u?"UTC":"");switch(d){case c:return s?m(1,0):m(31,11);case l:return s?m(1,p):m(0,p+1);case a:var v=this.$locale().weekStart||0,g=(h<v?h+7:h)-v;return m(s?E-g:E+(6-g),p);case"day":case i:return f(y+"Hours",0);case r:return f(y+"Minutes",1);case n:return f(y+"Seconds",2);case t:return f(y+"Milliseconds",3);default:return this.clone()}},f.endOf=function(e){return this.startOf(e,!1)},f.$set=function(a,o){var u,s=b.p(a),d="set"+(this.$u?"UTC":""),m=((u={}).day=d+"Date",u[i]=d+"Date",u[l]=d+"Month",u[c]=d+"FullYear",u[r]=d+"Hours",u[n]=d+"Minutes",u[t]=d+"Seconds",u[e]=d+"Milliseconds",u)[s],f="day"===s?this.$D+(o-this.$W):o;if(s===l||s===c){var h=this.clone().set(i,1);h.$d[m](f),h.init(),this.$d=h.set(i,Math.min(this.$D,h.daysInMonth())).$d}else m&&this.$d[m](f);return this.init(),this},f.set=function(e,t){return this.clone().$set(e,t)},f.get=function(e){return this[b.p(e)]()},f.add=function(e,o){var i,u=this;e=Number(e);var s=b.p(o),d=function(t){var n=v(u);return b.w(n.date(n.date()+Math.round(t*e)),u)};if(s===l)return this.set(l,this.$M+e);if(s===c)return this.set(c,this.$y+e);if("day"===s)return d(1);if(s===a)return d(7);var m=((i={})[n]=6e4,i[r]=36e5,i[t]=1e3,i)[s]||1,f=this.$d.getTime()+e*m;return b.w(f,this)},f.subtract=function(e,t){return this.add(-1*e,t)},f.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||u;var r=e||"YYYY-MM-DDTHH:mm:ssZ",a=b.z(this),l=this.$H,o=this.$m,c=this.$M,i=n.weekdays,s=n.months,m=n.meridiem,f=function(e,n,a,l){return e&&(e[n]||e(t,r))||a[n].slice(0,l)},h=function(e){return b.s(l%12||12,e,"0")},p=m||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(d,function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return c+1;case"MM":return b.s(c+1,2,"0");case"MMM":return f(n.monthsShort,c,s,3);case"MMMM":return f(s,c);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return f(n.weekdaysMin,t.$W,i,2);case"ddd":return f(n.weekdaysShort,t.$W,i,3);case"dddd":return i[t.$W];case"H":return String(l);case"HH":return b.s(l,2,"0");case"h":return h(1);case"hh":return h(2);case"a":return p(l,o,!0);case"A":return p(l,o,!1);case"m":return String(o);case"mm":return b.s(o,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return a}return null}(e)||a.replace(":","")})},f.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},f.diff=function(e,i,u){var s,d=this,m=b.p(i),f=v(e),h=(f.utcOffset()-this.utcOffset())*6e4,p=this-f,E=function(){return b.m(d,f)};switch(m){case c:s=E()/12;break;case l:s=E();break;case o:s=E()/3;break;case a:s=(p-h)/6048e5;break;case"day":s=(p-h)/864e5;break;case r:s=p/36e5;break;case n:s=p/6e4;break;case t:s=p/1e3;break;default:s=p}return u?s:b.a(s)},f.daysInMonth=function(){return this.endOf(l).$D},f.$locale=function(){return h[this.$L]},f.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=y(e,t,!0);return r&&(n.$L=r),n},f.clone=function(){return b.w(this.$d,this)},f.toDate=function(){return new Date(this.valueOf())},f.toJSON=function(){return this.isValid()?this.toISOString():null},f.toISOString=function(){return this.$d.toISOString()},f.toString=function(){return this.$d.toUTCString()},m}(),w=g.prototype;return v.prototype=w,[["$ms",e],["$s",t],["$m",n],["$H",r],["$W","day"],["$M",l],["$y",c],["$D",i]].forEach(function(e){w[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),v.extend=function(e,t){return e.$i||(e(t,g,v),e.$i=!0),v},v.locale=y,v.isDayjs=E,v.unix=function(e){return v(1e3*e)},v.en=h[f],v.Ls=h,v.p={},v}()},19806:function(e){e.exports=function(e,t,n){e=e||{};var r=t.prototype,a={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function l(e,t,n,a){return r.fromToBase(e,t,n,a)}n.en.relativeTime=a,r.fromToBase=function(t,r,l,o,c){for(var i,u,s,d=l.$locale().relativeTime||a,m=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],f=m.length,h=0;h<f;h+=1){var p=m[h];p.d&&(i=o?n(t).diff(l,p.d,!0):l.diff(t,p.d,!0));var E=(e.rounding||Math.round)(Math.abs(i));if(s=i>0,E<=p.r||!p.r){E<=1&&h>0&&(p=m[h-1]);var y=d[p.l];c&&(E=c(""+E)),u="string"==typeof y?y.replace("%d",E):y(E,r,p.l,s);break}}if(r)return u;var v=s?d.future:d.past;return"function"==typeof v?v(u):v.replace("%s",u)},r.to=function(e,t){return l(e,t,this,!0)},r.from=function(e,t){return l(e,t,this)};var o=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(o(this),e)},r.fromNow=function(e){return this.from(o(this),e)}}},23378:function(e,t,n){n.d(t,{cS:()=>N,C5:()=>$,hb:()=>S});var r,a,l,o,c,i=n(96540),u=n(28166),s=n(96540);function d(e){var t=e.doc;return s.createElement("div",{id:"on-github",className:"on-github"},s.createElement(f,{doc:t},"de"!==t.locale?"View this page on GitHub":"\xdcbersetzung auf GitHub anzeigen")," ","•"," ",s.createElement(m,{doc:t},"de"!==t.locale?"Report a problem with this content":"Fehler mit dieser \xdcbersetzung melden"))}function m(e){var t,n,r,a,l=e.doc,o=e.children,c=l.locale,i=new URL("https://github.com/"),u=new URLSearchParams;return i.pathname="en-US"!==c?"/mdn/translated-content/issues/new":"/mdn/content/issues/new","de"===c&&(i.pathname="/mdn/translated-content-de/issues/new"),u.set("template","en-US"!==c?"page-report-".concat(c.toLowerCase(),".yml"):"page-report.yml"),u.set("mdn-url","https://developer.mozilla.org".concat(l.mdn_url)),u.set("metadata",(n=(t=l.source).folder,r=t.github_url,a=t.last_commit_url,"de"===l.locale&&(r=r.replace("/translated-content/","/translated-content-de/"),a=a.replace("/translated-content/","/translated-content-de/")),"\n\x3c!-- Do not make changes below this line --\x3e\n<details>\n<summary>Page report details</summary>\n\n* Folder: `$FOLDER`\n* MDN URL: https://developer.mozilla.org$PATHNAME\n* GitHub URL: $GITHUB_URL\n* Last commit: $LAST_COMMIT_URL\n* Document last modified: $DATE\n\n</details>\n".replace(/\$PATHNAME/g,l.mdn_url).replace(/\$FOLDER/g,n).replace(/\$GITHUB_URL/g,r).replace(/\$LAST_COMMIT_URL/g,a).replace(/\$DATE/g,l.modified?new Date(l.modified).toISOString():"*date not known*").trim())),i.search=u.toString(),s.createElement("a",{href:i.href,title:"This will take you to GitHub to file a new issue.",target:"_blank",rel:"noopener noreferrer"},o)}function f(e){var t=e.doc,n=e.children,r=t.source,a=r.github_url,l=r.folder;return"de"===t.locale&&(a=a.replace("/translated-content/","/translated-content-de/")),s.createElement("a",{href:"".concat(a,"?plain=1"),title:"Folder: ".concat(l," (Opens in a new tab)"),target:"_blank",rel:"noopener noreferrer"},n)}function h(){return(h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}let p=2579==n.j?(0,i.forwardRef)(({title:e,titleId:t,...n},u)=>i.createElement("svg",h({xmlns:"http://www.w3.org/2000/svg",width:162,height:162,viewBox:"0 0 162 162",fill:"none",ref:u,"aria-labelledby":t},n),e?i.createElement("title",{id:t},e):null,r||(r=i.createElement("mask",{id:"b",fill:"#fff"},i.createElement("path",{d:"M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z"}))),i.createElement("path",{stroke:"url(#a)",strokeDasharray:"6, 6",strokeWidth:2,d:"M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z",mask:"url(#b)",style:{stroke:"url(#a)"},transform:"translate(-63.992 -25.587)"}),a||(a=i.createElement("ellipse",{cx:8.066,cy:111.597,fill:"var(--background-tertiary)",rx:53.677,ry:53.699,transform:"matrix(.71707 -.697 .7243 .6895 0 0)"})),l||(l=i.createElement("g",{clipPath:"url(#c)",transform:"translate(-63.992 -25.587)"},i.createElement("path",{fill:"#9abff5",d:"m144.256 137.379 32.906 12.434a4.41 4.41 0 0 1 2.559 5.667l-9.326 24.679a4.41 4.41 0 0 1-5.667 2.559l-8.226-3.108-2.332 6.17c-.466 1.233-.375 1.883-1.609 1.417l-2.253-.527c-.411-.155-.95-.594-1.206-1.161l-4.734-10.484-12.545-4.741a4.41 4.41 0 0 1-2.559-5.667l9.325-24.679a4.41 4.41 0 0 1 5.667-2.559m9.961 29.617 8.227 3.108 3.264-8.638-.498-6.768-4.113-1.555.548 7.258-4.319-1.632zm-12.339-4.663 8.226 3.108 3.264-8.637-.498-6.769-4.113-1.554.548 7.257-4.319-1.632z"}))),o||(o=i.createElement("g",{clipPath:"url(#d)",transform:"translate(-63.992 -25.587)"},i.createElement("path",{fill:"#81b0f3",d:"M135.35 60.136 86.67 41.654c-3.346-1.27-7.124.428-8.394 3.775L64.414 81.938c-1.27 3.347.428 7.125 3.774 8.395l12.17 4.62-3.465 9.128c-.693 1.826-1.432 2.457.394 3.15l3.014 1.625c.609.231 1.637.274 2.477-.104l15.53-6.983 18.56 7.047c3.346 1.27 7.124-.428 8.395-3.775l13.862-36.51c1.27-3.346-.428-7.124-3.775-8.395M95.261 83.207l-12.17-4.62 4.852-12.779 7.19-7.017 6.085 2.31-7.725 7.51 6.389 2.426zm18.255 6.93-12.17-4.62 4.852-12.778 7.189-7.017 6.085 2.31-7.725 7.51 6.39 2.426z"}))),c||(c=i.createElement("defs",null,i.createElement("clipPath",{id:"c"},i.createElement("path",{fill:"#fff",d:"m198.638 146.586-65.056-24.583-24.583 65.057 65.056 24.582z"})),i.createElement("clipPath",{id:"d"},i.createElement("path",{fill:"#fff",d:"m66.438 14.055 96.242 36.54-36.54 96.243-96.243-36.54z"})),i.createElement("linearGradient",{id:"a",x1:97.203,x2:199.995,y1:47.04,y2:152.793,gradientUnits:"userSpaceOnUse"},i.createElement("stop",{stopColor:"#086DFC"}),i.createElement("stop",{offset:.246,stopColor:"#2C81FA"}),i.createElement("stop",{offset:.516,stopColor:"#5497F8"}),i.createElement("stop",{offset:.821,stopColor:"#80B0F6"}),i.createElement("stop",{offset:1,stopColor:"#9ABFF5"})))))):null;var E=n(7874),y=n(47263),v=n(8004),b=n(96540);function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,c=!1;try{for(a=a.call(e);!(o=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){c=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return g(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e){var t=e.value,n=e.locale;if(!t)return b.createElement("span",null,"Last modified date not known");var r=new Date(t);return b.createElement(b.Fragment,null,"This page was last modified on"," ",b.createElement("time",{dateTime:t,suppressHydrationWarning:!0},r.toLocaleString(n,{year:"numeric",month:"short",day:"numeric"})))}function S(e){var t=e.url;return b.createElement("a",{href:"".concat(t,"/contributors.txt"),rel:"nofollow"},"MDN contributors")}var k=2579==n.j?{outdated:"Content is out of date",incomplete:"Missing information",code_examples:"Code examples not working as expected",other:"Other"}:null,_=2579==n.j?{technical:"\xdcbersetzung enth\xe4lt fachliche Fehler",consistency:"Begriffe sind inkonsistent \xfcbersetzt",incomprehensible:"\xdcbersetzung ist nicht verst\xe4ndlich",linguistic:"\xdcbersetzung enth\xe4lt sprachliche Fehler",code_examples:"Code-Beispiele funktionieren nicht",other:"Sonstige"}:null;function N(e){var t=e.doc,n=w((0,i.useState)(0),2),r=n[0],a=n[1],l=w((0,i.useState)(),2),o=l[0],c=l[1],s=(0,E.db)();function m(e){a(e?2:1),s("".concat(y.aG,": ").concat(y.lM," -> ").concat(Number(e)))}return b.createElement("aside",{className:"article-footer"},b.createElement("div",{className:"article-footer-inner"},b.createElement("div",{className:"svg-container"},b.createElement(p,{role:"none"})),b.createElement("h2",null,"de"!==t.locale?"Help improve MDN":"MDN-Feedback-Box"),b.createElement("fieldset",{className:"feedback"},0===r?b.createElement(b.Fragment,null,b.createElement("label",null,"de"!==t.locale?"Was this page helpful to you?":"War diese \xdcbersetzung hilfreich?"),b.createElement("div",{className:"button-container"},b.createElement(u.$,{icon:"thumbs-up",extraClasses:"yes",onClickHandler:function(){return m(!0)}},"de"!==t.locale?"Yes":"Ja"),b.createElement(u.$,{icon:"thumbs-down",extraClasses:"no",onClickHandler:function(){return m(!1)}},"de"!==t.locale?"No":"Nein"))):1===r?b.createElement(b.Fragment,null,b.createElement("label",null,"de"!==t.locale?"Why was this page not helpful to you?":"Warum war diese \xdcbersetzung nicht hilfreich?"),Object.entries("de"!==t.locale?k:_).map(function(e){var t=w(e,2),n=t[0],r=t[1];return b.createElement("div",{className:"radio-container",key:n},b.createElement("input",{type:"radio",id:"reason_".concat(n),name:"reason",value:n,checked:o===n,onChange:function(e){return c(e.target.value)}}),b.createElement("label",{htmlFor:"reason_".concat(n)},r))}),b.createElement("div",{className:"button-container"},b.createElement(u.$,{type:"primary",isDisabled:!o,onClickHandler:function(){a(2),s("".concat(y.lM,": feedback -> ").concat(o))}},"de"!==t.locale?"Submit":"Abschicken"))):b.createElement("span",{className:"thank-you"},"de"!==t.locale?"Thank you for your feedback!":"Vielen Dank f\xfcr die R\xfcckmeldung!"," ",b.createElement("span",{className:"emoji"},"❤️"))),"de"!==t.locale&&b.createElement(D,{locale:t.locale}),b.createElement("p",{className:"last-modified-date"},"de"!==t.locale?b.createElement(b.Fragment,null,b.createElement($,{value:t.modified,locale:t.locale})," by"," ",b.createElement(S,{url:t.mdn_url}),"."):b.createElement(b.Fragment,null,"Diese Seite wurde automatisch aus dem Englischen \xfcbersetzt.")),t.isActive&&b.createElement(d,{doc:t})))}function D(e){var t=e.locale===v.Xn?"content":"translated-content";return b.createElement(b.Fragment,null,b.createElement("a",{className:"contribute",href:"https://github.com/mdn/".concat(t,"/blob/main/CONTRIBUTING.md"),title:"This will take you to our contribution guidelines on GitHub.",target:"_blank",rel:"noopener noreferrer"},"Learn how to contribute"),".")}},28202:function(e,t,n){n.r(t),n.d(t,{default:()=>W});var r=n(96540),a=n(16563),l=n(28166),o=n(37006),c=n(39330),i=n(53802),u=n(18761),s=n(23425),d=n(65318),m=n(45571),f=n(73730),h=n(23378),p=n(62874),E=n(40967),y=n(25572),v=n.n(y),b=n(19806),g=n.n(b),w=n(53328),$=n(7874),S=n(47263),k=n(96540);function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function N(e,t,n,r,a,l,o){try{var c=e[l](o),i=c.value}catch(e){n(e);return}c.done?t(i):Promise.resolve(i).then(r,a)}function D(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,c=!1;try{for(a=a.call(e);!(o=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){c=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(){var e=(0,c.g)().collectionId,t=(0,i.Ge)(e),n=t.data,r=t.error,o=(0,i.wB)(e),u=o.data,m=o.error,h=o.isLoading,p=o.size,y=o.setSize,v=o.atEnd,b=o.mutate;(0,s.bs)();var g=(null==n?void 0:n.name)==="Default"?"Saved Articles":null==n?void 0:n.name;document.title="".concat(g||"Collections"," | ").concat(E.U6);var w=(null==n?void 0:n.name)==="Default"?"The default collection.":null==n?void 0:n.description;return n?k.createElement("div",{className:"collections collections-collection"},k.createElement("header",null,k.createElement(a.A,null,k.createElement(c.N_,{to:"../",className:"exit"},"← Back"),k.createElement("h1",null,g),k.createElement("span",{className:"count"},n.article_count," ",1===n.article_count?"article":"articles"),w&&k.createElement("p",null,w))),k.createElement(a.A,null,(null==u?void 0:u.flat(1).map(function(e){return k.createElement(C,{key:e.id,item:e,mutate:b})}))||h&&k.createElement(d.R,null),!v&&k.createElement("div",{className:"pagination"},k.createElement(l.$,{type:"primary",onClickHandler:function(){y(p+1)},isDisabled:h},h?"Loading...":m?"Error (try again)":"Show more")))):k.createElement("div",{className:"collections collections-collection"},k.createElement("header",null,k.createElement(a.A,null,k.createElement(c.N_,{to:"../",className:"exit"},"← Back"))),k.createElement(a.A,null,r?k.createElement(f.A,{type:"error"},k.createElement("h4",null,"Error"),k.createElement("p",null,r.message),k.createElement(l.$,{href:"../",type:"secondary"},"Go Back")):k.createElement(d.R,null)))}function A(){var e=D((0,r.useState)(0),2),t=e[0],n=e[1],o=D((0,r.useState)(!1),2),i=o[0],u=o[1],d=(0,w.H3)(10,t,u);return(0,s.bs)(),k.createElement("div",{className:"collections collections-collection"},k.createElement("header",null,k.createElement(a.A,null,k.createElement(c.N_,{to:"../",className:"exit"},"← Back"),k.createElement("h1",null,d.name),k.createElement("span",{className:"count"},d.article_count," ",1===d.article_count?"article":"articles"),k.createElement("p",null,d.description))),k.createElement(a.A,null,d.items.map(function(e){return k.createElement(C,{addNoteEnabled:!1,key:e.id,item:e})}),!i&&k.createElement("div",{className:"pagination"},k.createElement(l.$,{type:"primary",onClickHandler:function(){n(t+10)}},"Show more"))))}function C(e){var t,n=e.addNoteEnabled,a=e.item,o=e.mutate,c=D((0,r.useState)(),2),i=c[0],d=c[1],f=D((0,r.useState)(),2),E=f[0],y=f[1],v=(0,s.Ym)(),b=(0,$.db)();(0,r.useEffect)(function(){var e=a.notes&&(0,m.Tn)(a.notes,0,180);d(e),y(e)},[a.notes]);var g=a.parents.slice(0,-1).map(function(e){return(0,m.jj)(e.title)}).filter(function(e,t,n){return e!==n[t+1]}),w=function(e){var t=e.currentTarget.closest("article");[null==t?void 0:t.querySelector(".article-actions-toggle"),null==t?void 0:t.querySelector(".bookmark-button")].forEach(function(e){var t;(null!=(t=HTMLElement)&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t)&&"none"!==getComputedStyle(e).display&&e.click()})},_=(0,u.Ay)("".concat(a.url,"/metadata.json"),function(e){var t;return(t=function(){var t;return function(e,t){var n,r,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=c(0),o.throw=c(1),o.return=c(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(c){return function(i){var u=[c,i];if(n)throw TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(l=0)),l;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return l.label++,{value:u[1],done:!1};case 5:l.label++,r=u[1],u=[0];continue;case 7:u=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){l=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){l.label=u[1];break}if(6===u[0]&&l.label<a[1]){l.label=a[1],a=u;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(u);break}a[2]&&l.ops.pop(),l.trys.pop();continue}u=t.call(e,l)}catch(e){u=[6,e],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:if(!(t=n.sent()).ok)throw Error(t.statusText);return[4,t.json()];case 2:return[2,n.sent()]}})},function(){var e=this,n=arguments;return new Promise(function(r,a){var l=t.apply(e,n);function o(e){N(l,r,a,o,c,"next",e)}function c(e){N(l,r,a,o,c,"throw",e)}o(void 0)})})()},{revalidateIfStale:!1,revalidateOnFocus:!1,revalidateOnReconnect:!1}).data,M=(0,m.Mw)(a.url);return k.createElement("article",{key:a.url,className:M?"category-".concat(M):void 0},k.createElement("header",null,k.createElement("h2",null,k.createElement("a",{href:a.url},(0,m.jj)(a.title))),k.createElement(p.o,{doc:_,showTranslations:!1,item:"collection_id"in a?a:void 0,scopedMutator:o})),k.createElement("div",{className:"breadcrumbs"},g.join(" > ")),_&&k.createElement(k.Fragment,null,k.createElement("p",null,_.summary),k.createElement("aside",null,k.createElement(h.C5,{value:_.modified,locale:v}),","," ",k.createElement(h.hb,{url:a.url}))),E?k.createElement("div",{className:"note"},k.createElement("div",null,_&&k.createElement(l.$,{icon:"edit",type:"action",onClickHandler:function(e){return b(S.DW.ACTIONS_NOTE_EDIT),w(e)}},k.createElement("span",{className:"visually-hidden"},"Edit note"))),k.createElement("div",{className:"text"},k.createElement("p",{className:(null==(t=a.notes)?void 0:t.includes("{"))?"code":""},E.trimEnd()),i!==a.notes&&(E!==a.notes?k.createElement(k.Fragment,null,"… ",k.createElement(l.$,{type:"link",onClickHandler:function(){return y(a.notes)}},"See full note")):k.createElement(k.Fragment,null," ",k.createElement(l.$,{type:"link",onClickHandler:function(){return y(i)}},"Show less"))))):_&&(void 0===n||n)?k.createElement(l.$,{extraClasses:"add-note",icon:"edit",type:"action",onClickHandler:function(e){return b(S.DW.ACTIONS_NOTE_ADD),w(e)}},"Add note"):null)}v().extend(g());var O=n(29558),T=n(41161),x=n(78935),I=n(76793);function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function L(e,t,n,r,a,l,o){try{var c=e[l](o),i=c.value}catch(e){n(e);return}c.done?t(i):Promise.resolve(i).then(r,a)}function j(e){return function(){var t=this,n=arguments;return new Promise(function(r,a){var l=e.apply(t,n);function o(e){L(l,r,a,o,c,"next",e)}function c(e){L(l,r,a,o,c,"throw",e)}o(void 0)})}}function F(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,c=!1;try{for(a=a.call(e);!(o=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){c=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function U(e,t){var n,r,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=c(0),o.throw=c(1),o.return=c(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(c){return function(i){var u=[c,i];if(n)throw TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(l=0)),l;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return l.label++,{value:u[1],done:!1};case 5:l.label++,r=u[1],u=[0];continue;case 7:u=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){l=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){l.label=u[1];break}if(6===u[0]&&l.label<a[1]){l.label=a[1],a=u;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(u);break}a[2]&&l.ops.pop(),l.trys.pop();continue}u=t.call(e,l)}catch(e){u=[6,e],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}v().extend(g());var z={revalidateOnFocus:!1,revalidateIfStale:!1};function W(){return r.createElement(u.BE,{value:z},r.createElement(c.BV,null,r.createElement(c.qh,{path:"/",element:r.createElement(B,null)}),r.createElement(c.qh,{path:"frequently-viewed",element:r.createElement(A,null)}),r.createElement(c.qh,{path:":collectionId",element:r.createElement(M,null)})))}function B(){document.title="Collections | ".concat(E.U6);var e=(0,i.Xd)(),t=e.data,n=e.isLoading,c=e.error,u=F((0,r.useState)(!1),2),s=u[0],m=u[1],h=(0,$.db)(),p=null==t?void 0:t.map(function(e){return r.createElement(R,{key:e.id,collection:e})}),y=r.createElement(G,{key:"frequently-viewed"});return p&&y&&p.splice(1,0,y),r.createElement("div",{className:"collections collections-overview"},r.createElement("header",{className:"plus-header-mandala"},r.createElement(a.A,null,r.createElement("h1",null,r.createElement("div",{className:"mandala-icon-wrapper"},r.createElement(x.A,null),r.createElement(I.I,{name:"bookmark-filled"})),r.createElement("span",null,"Collections")),r.createElement("p",null,"Save and group your favorite MDN articles to easily find them later on.",r.createElement("br",null),r.createElement("a",{rel:"noreferrer noopener",target:"_blank",href:"https://survey.alchemer.com/s3/6988450/Feature-Preview-User-Feedback-Multiple-Collections"},"We'd love to hear your feedback!")),r.createElement(l.$,{onClickHandler:function(){h(S.DW.BANNER_NEW),m(!0)},isDisabled:n},"New Collection"),r.createElement(o.A,{show:s,setShow:m,source:S.DW.NEW_MODAL_SUBMIT_COLLECTIONS_PAGE}))),r.createElement(a.A,null,n?r.createElement(d.R,null):t?p:c?r.createElement(f.A,{type:"error"},r.createElement("h4",null,"Error"),r.createElement("p",null,c.message)):"Create a new collection..."))}function R(e){var t=e.collection,n=F((0,r.useState)(!1),2),a=n[0],u=n[1],s=F((0,r.useState)(!1),2),d=s[0],h=s[1],p=F((0,r.useState)(!1),2),E=p[0],y=p[1],b=(0,i.Lg)(),g=b.mutator,w=b.error,$=b.resetError,k=b.isPending,_=function(e){return j(function(){return U(this,function(t){return e.preventDefault(),k||($(),y(!1)),[2]})})()};return"Default"===t.name?r.createElement(P,{collection:t}):r.createElement("article",{key:t.id},r.createElement("header",null,r.createElement("h2",null,r.createElement(c.N_,{to:t.id},(0,m.jj)(t.name))),"Default"!==t.name?r.createElement(O.q,{className:"dropdown is-flush-right",isOpen:a,setIsOpen:u},r.createElement(l.$,{type:"action",icon:"ellipses","aria-controls":"collection-dropdown","aria-haspopup":"menu","aria-expanded":a||void 0,onClickHandler:function(){u(!a)}}),r.createElement(O.r,null,r.createElement("ul",{className:"dropdown-list",id:"collection-dropdown"},r.createElement("li",{className:"dropdown-item"},r.createElement(l.$,{type:"action",title:"Edit",onClickHandler:function(){h(!0),u(!1)}},"Edit")),r.createElement("li",{className:"dropdown-item"},r.createElement(l.$,{type:"action",title:"Delete",onClickHandler:function(){y(!0),u(!1)}},"Delete"))))):null,r.createElement(o.A,{editingCollection:t,show:d,setShow:h,source:S.DW.NEW_MODAL_SUBMIT_COLLECTIONS_PAGE}),r.createElement(T.A,{isOpen:E,size:"small",onRequestClose:_,extraOverlayClassName:k?"wait":""},r.createElement("header",{className:"modal-header"},r.createElement("h2",{className:"modal-heading"},"Delete collection"),r.createElement(l.$,{onClickHandler:_,type:"action",icon:"cancel",extraClasses:"close-button"})),r.createElement("div",{className:"modal-body"},w&&r.createElement(f.A,{type:"error"},r.createElement("p",null,"Error: ",w.message)),r.createElement("p",null,'Are you sure you want to delete your collection "',t.name,'"?'),r.createElement("div",{className:"mdn-form-item is-button-row"},r.createElement(l.$,{onClickHandler:function(e){return j(function(){return U(this,function(n){switch(n.label){case 0:if(e.preventDefault(),k)return[2];return[4,g(t)];case 1:return n.sent(),y(!1),[2]}})})()},isDisabled:k},k?"Deleting...":"Delete"),r.createElement(l.$,{onClickHandler:_,type:"secondary",isDisabled:k},"Cancel"))))),t.description&&r.createElement("p",null,(0,m.jj)(t.description)),r.createElement("footer",null,r.createElement(c.N_,{to:t.id,className:"count"},t.article_count," ",1===t.article_count?"article":"articles"),r.createElement("time",{dateTime:v()(t.updated_at).toISOString()},"Edited ",v()(t.updated_at).fromNow().toString())))}function P(e){var t=e.collection;return r.createElement("article",{key:t.id,className:"default"},r.createElement("header",null,r.createElement("h2",null,r.createElement(c.N_,{to:t.id},"Saved Articles"))),r.createElement("p",null,"The default collection."),r.createElement("footer",null,r.createElement(c.N_,{to:t.id,className:"count"},t.article_count," ",1===t.article_count?"article":"articles"),r.createElement("time",{dateTime:v()(t.updated_at).toISOString()},"Edited ",v()(t.updated_at).fromNow().toString())))}function G(){var e=(0,w.H3)();return e.items.length?r.createElement("article",{key:e.name,className:"default"},r.createElement("header",null,r.createElement("h2",null,r.createElement(c.N_,{to:"frequently-viewed"},e.name))),r.createElement("p",null,e.description),r.createElement("footer",null,r.createElement(c.N_,{to:"frequently-viewed",className:"count"},e.article_count," ",1===e.article_count?"article":"articles"),r.createElement("time",{dateTime:v()(e.updated_at).toISOString()},"Updated ",v()(e.updated_at).fromNow().toString()))):null}},16563:function(e,t,n){n.d(t,{A:()=>a});var r=n(96540);function a(e){var t=e.children,n=e.extraClasses,a=e.optional;return r.createElement(r.Fragment,null,!0===a?r.createElement(r.Fragment,null,t):r.createElement("div",{className:"container ".concat(n||"")},t))}}};
2
+ //# sourceMappingURL=8183.26862a110c641391.js.map