@wordpress/editor 13.17.0 → 13.17.1

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.
@@ -24,27 +24,32 @@ const TRANSLATED_SITE_PROPERTIES = {
24
24
  };
25
25
  const useIsDirty = () => {
26
26
  const {
27
- dirtyEntityRecords
27
+ editedEntities,
28
+ siteEdits
28
29
  } = (0, _data.useSelect)(select => {
29
- const dirtyRecords = select(_coreData.store).__experimentalGetDirtyEntityRecords();
30
-
30
+ const {
31
+ __experimentalGetDirtyEntityRecords,
32
+ getEntityRecordEdits
33
+ } = select(_coreData.store);
34
+ return {
35
+ editedEntities: __experimentalGetDirtyEntityRecords(),
36
+ siteEdits: getEntityRecordEdits('root', 'site')
37
+ };
38
+ }, []);
39
+ const dirtyEntityRecords = (0, _element.useMemo)(() => {
31
40
  // Remove site object and decouple into its edited pieces.
32
- const dirtyRecordsWithoutSite = dirtyRecords.filter(record => !(record.kind === 'root' && record.name === 'site'));
33
- const siteEdits = select(_coreData.store).getEntityRecordEdits('root', 'site');
34
- const siteEditsAsEntities = [];
41
+ const editedEntitiesWithoutSite = editedEntities.filter(record => !(record.kind === 'root' && record.name === 'site'));
42
+ const editedSiteEntities = [];
35
43
  for (const property in siteEdits) {
36
- siteEditsAsEntities.push({
44
+ editedSiteEntities.push({
37
45
  kind: 'root',
38
46
  name: 'site',
39
47
  title: TRANSLATED_SITE_PROPERTIES[property] || property,
40
48
  property
41
49
  });
42
50
  }
43
- const dirtyRecordsWithSiteItems = [...dirtyRecordsWithoutSite, ...siteEditsAsEntities];
44
- return {
45
- dirtyEntityRecords: dirtyRecordsWithSiteItems
46
- };
47
- }, []);
51
+ return [...editedEntitiesWithoutSite, ...editedSiteEntities];
52
+ }, [editedEntities, siteEdits]);
48
53
 
49
54
  // Unchecked entities to be ignored by save function.
50
55
  const [unselectedEntities, _setUnselectedEntities] = (0, _element.useState)([]);
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_coreData","_element","_i18n","TRANSLATED_SITE_PROPERTIES","title","__","description","site_logo","site_icon","show_on_front","page_on_front","posts_per_page","default_comment_status","useIsDirty","dirtyEntityRecords","useSelect","select","dirtyRecords","coreStore","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","kind","name","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","unselectedEntities","_setUnselectedEntities","useState","setUnselectedEntities","key","checked","elt","isDirty","length","exports"],"sources":["@wordpress/editor/src/components/entities-saved-states/hooks/use-is-dirty.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tsite_icon: __( 'Icon' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n\tposts_per_page: __( 'Maximum posts per page' ),\n\tdefault_comment_status: __( 'Allow comments on new posts' ),\n};\n\nexport const useIsDirty = () => {\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords =\n\t\t\tselect( coreStore ).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst isDirty = dirtyEntityRecords.length - unselectedEntities.length > 0;\n\n\treturn {\n\t\tdirtyEntityRecords,\n\t\tisDirty,\n\t\tsetUnselectedEntities,\n\t\tunselectedEntities,\n\t};\n};\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AANA;AACA;AACA;;AAMA,MAAMI,0BAA0B,GAAG;EAClCC,KAAK,EAAE,IAAAC,QAAE,EAAE,OAAQ,CAAC;EACpBC,WAAW,EAAE,IAAAD,QAAE,EAAE,SAAU,CAAC;EAC5BE,SAAS,EAAE,IAAAF,QAAE,EAAE,MAAO,CAAC;EACvBG,SAAS,EAAE,IAAAH,QAAE,EAAE,MAAO,CAAC;EACvBI,aAAa,EAAE,IAAAJ,QAAE,EAAE,eAAgB,CAAC;EACpCK,aAAa,EAAE,IAAAL,QAAE,EAAE,eAAgB,CAAC;EACpCM,cAAc,EAAE,IAAAN,QAAE,EAAE,wBAAyB,CAAC;EAC9CO,sBAAsB,EAAE,IAAAP,QAAE,EAAE,6BAA8B;AAC3D,CAAC;AAEM,MAAMQ,UAAU,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC;EAAmB,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IACvD,MAAMC,YAAY,GACjBD,MAAM,CAAEE,eAAU,CAAC,CAACC,mCAAmC,CAAC,CAAC;;IAE1D;IACA,MAAMC,uBAAuB,GAAGH,YAAY,CAACI,MAAM,CAChDC,MAAM,IAAM,EAAIA,MAAM,CAACC,IAAI,KAAK,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,CACnE,CAAC;IAED,MAAMC,SAAS,GAAGT,MAAM,CAAEE,eAAU,CAAC,CAACQ,oBAAoB,CACzD,MAAM,EACN,MACD,CAAC;IAED,MAAMC,mBAAmB,GAAG,EAAE;IAC9B,KAAM,MAAMC,QAAQ,IAAIH,SAAS,EAAG;MACnCE,mBAAmB,CAACE,IAAI,CAAE;QACzBN,IAAI,EAAE,MAAM;QACZC,IAAI,EAAE,MAAM;QACZpB,KAAK,EAAED,0BAA0B,CAAEyB,QAAQ,CAAE,IAAIA,QAAQ;QACzDA;MACD,CAAE,CAAC;IACJ;IACA,MAAME,yBAAyB,GAAG,CACjC,GAAGV,uBAAuB,EAC1B,GAAGO,mBAAmB,CACtB;IAED,OAAO;MACNb,kBAAkB,EAAEgB;IACrB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAEP;EACA,MAAM,CAAEC,kBAAkB,EAAEC,sBAAsB,CAAE,GAAG,IAAAC,iBAAQ,EAAE,EAAG,CAAC;EAErE,MAAMC,qBAAqB,GAAGA,CAC7B;IAAEX,IAAI;IAAEC,IAAI;IAAEW,GAAG;IAAEP;EAAS,CAAC,EAC7BQ,OAAO,KACH;IACJ,IAAKA,OAAO,EAAG;MACdJ,sBAAsB,CACrBD,kBAAkB,CAACV,MAAM,CACtBgB,GAAG,IACJA,GAAG,CAACd,IAAI,KAAKA,IAAI,IACjBc,GAAG,CAACb,IAAI,KAAKA,IAAI,IACjBa,GAAG,CAACF,GAAG,KAAKA,GAAG,IACfE,GAAG,CAACT,QAAQ,KAAKA,QACnB,CACD,CAAC;IACF,CAAC,MAAM;MACNI,sBAAsB,CAAE,CACvB,GAAGD,kBAAkB,EACrB;QAAER,IAAI;QAAEC,IAAI;QAAEW,GAAG;QAAEP;MAAS,CAAC,CAC5B,CAAC;IACJ;EACD,CAAC;EAED,MAAMU,OAAO,GAAGxB,kBAAkB,CAACyB,MAAM,GAAGR,kBAAkB,CAACQ,MAAM,GAAG,CAAC;EAEzE,OAAO;IACNzB,kBAAkB;IAClBwB,OAAO;IACPJ,qBAAqB;IACrBH;EACD,CAAC;AACF,CAAC;AAACS,OAAA,CAAA3B,UAAA,GAAAA,UAAA"}
1
+ {"version":3,"names":["_data","require","_coreData","_element","_i18n","TRANSLATED_SITE_PROPERTIES","title","__","description","site_logo","site_icon","show_on_front","page_on_front","posts_per_page","default_comment_status","useIsDirty","editedEntities","siteEdits","useSelect","select","__experimentalGetDirtyEntityRecords","getEntityRecordEdits","coreStore","dirtyEntityRecords","useMemo","editedEntitiesWithoutSite","filter","record","kind","name","editedSiteEntities","property","push","unselectedEntities","_setUnselectedEntities","useState","setUnselectedEntities","key","checked","elt","isDirty","length","exports"],"sources":["@wordpress/editor/src/components/entities-saved-states/hooks/use-is-dirty.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tsite_icon: __( 'Icon' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n\tposts_per_page: __( 'Maximum posts per page' ),\n\tdefault_comment_status: __( 'Allow comments on new posts' ),\n};\n\nexport const useIsDirty = () => {\n\tconst { editedEntities, siteEdits } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetDirtyEntityRecords, getEntityRecordEdits } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\teditedEntities: __experimentalGetDirtyEntityRecords(),\n\t\t\tsiteEdits: getEntityRecordEdits( 'root', 'site' ),\n\t\t};\n\t}, [] );\n\n\tconst dirtyEntityRecords = useMemo( () => {\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst editedEntitiesWithoutSite = editedEntities.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst editedSiteEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\teditedSiteEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\n\t\treturn [ ...editedEntitiesWithoutSite, ...editedSiteEntities ];\n\t}, [ editedEntities, siteEdits ] );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst isDirty = dirtyEntityRecords.length - unselectedEntities.length > 0;\n\n\treturn {\n\t\tdirtyEntityRecords,\n\t\tisDirty,\n\t\tsetUnselectedEntities,\n\t\tunselectedEntities,\n\t};\n};\n"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { useSelect } from '@wordpress/data';
5
5
  import { store as coreStore } from '@wordpress/core-data';
6
- import { useState } from '@wordpress/element';
6
+ import { useMemo, useState } from '@wordpress/element';
7
7
  import { __ } from '@wordpress/i18n';
8
8
  const TRANSLATED_SITE_PROPERTIES = {
9
9
  title: __('Title'),
@@ -17,27 +17,32 @@ const TRANSLATED_SITE_PROPERTIES = {
17
17
  };
18
18
  export const useIsDirty = () => {
19
19
  const {
20
- dirtyEntityRecords
20
+ editedEntities,
21
+ siteEdits
21
22
  } = useSelect(select => {
22
- const dirtyRecords = select(coreStore).__experimentalGetDirtyEntityRecords();
23
-
23
+ const {
24
+ __experimentalGetDirtyEntityRecords,
25
+ getEntityRecordEdits
26
+ } = select(coreStore);
27
+ return {
28
+ editedEntities: __experimentalGetDirtyEntityRecords(),
29
+ siteEdits: getEntityRecordEdits('root', 'site')
30
+ };
31
+ }, []);
32
+ const dirtyEntityRecords = useMemo(() => {
24
33
  // Remove site object and decouple into its edited pieces.
25
- const dirtyRecordsWithoutSite = dirtyRecords.filter(record => !(record.kind === 'root' && record.name === 'site'));
26
- const siteEdits = select(coreStore).getEntityRecordEdits('root', 'site');
27
- const siteEditsAsEntities = [];
34
+ const editedEntitiesWithoutSite = editedEntities.filter(record => !(record.kind === 'root' && record.name === 'site'));
35
+ const editedSiteEntities = [];
28
36
  for (const property in siteEdits) {
29
- siteEditsAsEntities.push({
37
+ editedSiteEntities.push({
30
38
  kind: 'root',
31
39
  name: 'site',
32
40
  title: TRANSLATED_SITE_PROPERTIES[property] || property,
33
41
  property
34
42
  });
35
43
  }
36
- const dirtyRecordsWithSiteItems = [...dirtyRecordsWithoutSite, ...siteEditsAsEntities];
37
- return {
38
- dirtyEntityRecords: dirtyRecordsWithSiteItems
39
- };
40
- }, []);
44
+ return [...editedEntitiesWithoutSite, ...editedSiteEntities];
45
+ }, [editedEntities, siteEdits]);
41
46
 
42
47
  // Unchecked entities to be ignored by save function.
43
48
  const [unselectedEntities, _setUnselectedEntities] = useState([]);
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","store","coreStore","useState","__","TRANSLATED_SITE_PROPERTIES","title","description","site_logo","site_icon","show_on_front","page_on_front","posts_per_page","default_comment_status","useIsDirty","dirtyEntityRecords","select","dirtyRecords","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","kind","name","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","key","checked","elt","isDirty","length"],"sources":["@wordpress/editor/src/components/entities-saved-states/hooks/use-is-dirty.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tsite_icon: __( 'Icon' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n\tposts_per_page: __( 'Maximum posts per page' ),\n\tdefault_comment_status: __( 'Allow comments on new posts' ),\n};\n\nexport const useIsDirty = () => {\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords =\n\t\t\tselect( coreStore ).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst isDirty = dirtyEntityRecords.length - unselectedEntities.length > 0;\n\n\treturn {\n\t\tdirtyEntityRecords,\n\t\tisDirty,\n\t\tsetUnselectedEntities,\n\t\tunselectedEntities,\n\t};\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,MAAMC,0BAA0B,GAAG;EAClCC,KAAK,EAAEF,EAAE,CAAE,OAAQ,CAAC;EACpBG,WAAW,EAAEH,EAAE,CAAE,SAAU,CAAC;EAC5BI,SAAS,EAAEJ,EAAE,CAAE,MAAO,CAAC;EACvBK,SAAS,EAAEL,EAAE,CAAE,MAAO,CAAC;EACvBM,aAAa,EAAEN,EAAE,CAAE,eAAgB,CAAC;EACpCO,aAAa,EAAEP,EAAE,CAAE,eAAgB,CAAC;EACpCQ,cAAc,EAAER,EAAE,CAAE,wBAAyB,CAAC;EAC9CS,sBAAsB,EAAET,EAAE,CAAE,6BAA8B;AAC3D,CAAC;AAED,OAAO,MAAMU,UAAU,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC;EAAmB,CAAC,GAAGf,SAAS,CAAIgB,MAAM,IAAM;IACvD,MAAMC,YAAY,GACjBD,MAAM,CAAEd,SAAU,CAAC,CAACgB,mCAAmC,CAAC,CAAC;;IAE1D;IACA,MAAMC,uBAAuB,GAAGF,YAAY,CAACG,MAAM,CAChDC,MAAM,IAAM,EAAIA,MAAM,CAACC,IAAI,KAAK,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,CACnE,CAAC;IAED,MAAMC,SAAS,GAAGR,MAAM,CAAEd,SAAU,CAAC,CAACuB,oBAAoB,CACzD,MAAM,EACN,MACD,CAAC;IAED,MAAMC,mBAAmB,GAAG,EAAE;IAC9B,KAAM,MAAMC,QAAQ,IAAIH,SAAS,EAAG;MACnCE,mBAAmB,CAACE,IAAI,CAAE;QACzBN,IAAI,EAAE,MAAM;QACZC,IAAI,EAAE,MAAM;QACZjB,KAAK,EAAED,0BAA0B,CAAEsB,QAAQ,CAAE,IAAIA,QAAQ;QACzDA;MACD,CAAE,CAAC;IACJ;IACA,MAAME,yBAAyB,GAAG,CACjC,GAAGV,uBAAuB,EAC1B,GAAGO,mBAAmB,CACtB;IAED,OAAO;MACNX,kBAAkB,EAAEc;IACrB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAEP;EACA,MAAM,CAAEC,kBAAkB,EAAEC,sBAAsB,CAAE,GAAG5B,QAAQ,CAAE,EAAG,CAAC;EAErE,MAAM6B,qBAAqB,GAAGA,CAC7B;IAAEV,IAAI;IAAEC,IAAI;IAAEU,GAAG;IAAEN;EAAS,CAAC,EAC7BO,OAAO,KACH;IACJ,IAAKA,OAAO,EAAG;MACdH,sBAAsB,CACrBD,kBAAkB,CAACV,MAAM,CACtBe,GAAG,IACJA,GAAG,CAACb,IAAI,KAAKA,IAAI,IACjBa,GAAG,CAACZ,IAAI,KAAKA,IAAI,IACjBY,GAAG,CAACF,GAAG,KAAKA,GAAG,IACfE,GAAG,CAACR,QAAQ,KAAKA,QACnB,CACD,CAAC;IACF,CAAC,MAAM;MACNI,sBAAsB,CAAE,CACvB,GAAGD,kBAAkB,EACrB;QAAER,IAAI;QAAEC,IAAI;QAAEU,GAAG;QAAEN;MAAS,CAAC,CAC5B,CAAC;IACJ;EACD,CAAC;EAED,MAAMS,OAAO,GAAGrB,kBAAkB,CAACsB,MAAM,GAAGP,kBAAkB,CAACO,MAAM,GAAG,CAAC;EAEzE,OAAO;IACNtB,kBAAkB;IAClBqB,OAAO;IACPJ,qBAAqB;IACrBF;EACD,CAAC;AACF,CAAC"}
1
+ {"version":3,"names":["useSelect","store","coreStore","useMemo","useState","__","TRANSLATED_SITE_PROPERTIES","title","description","site_logo","site_icon","show_on_front","page_on_front","posts_per_page","default_comment_status","useIsDirty","editedEntities","siteEdits","select","__experimentalGetDirtyEntityRecords","getEntityRecordEdits","dirtyEntityRecords","editedEntitiesWithoutSite","filter","record","kind","name","editedSiteEntities","property","push","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","key","checked","elt","isDirty","length"],"sources":["@wordpress/editor/src/components/entities-saved-states/hooks/use-is-dirty.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tsite_icon: __( 'Icon' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n\tposts_per_page: __( 'Maximum posts per page' ),\n\tdefault_comment_status: __( 'Allow comments on new posts' ),\n};\n\nexport const useIsDirty = () => {\n\tconst { editedEntities, siteEdits } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetDirtyEntityRecords, getEntityRecordEdits } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\teditedEntities: __experimentalGetDirtyEntityRecords(),\n\t\t\tsiteEdits: getEntityRecordEdits( 'root', 'site' ),\n\t\t};\n\t}, [] );\n\n\tconst dirtyEntityRecords = useMemo( () => {\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst editedEntitiesWithoutSite = editedEntities.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst editedSiteEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\teditedSiteEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\n\t\treturn [ ...editedEntitiesWithoutSite, ...editedSiteEntities ];\n\t}, [ editedEntities, siteEdits ] );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst isDirty = dirtyEntityRecords.length - unselectedEntities.length > 0;\n\n\treturn {\n\t\tdirtyEntityRecords,\n\t\tisDirty,\n\t\tsetUnselectedEntities,\n\t\tunselectedEntities,\n\t};\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,OAAO,EAAEC,QAAQ,QAAQ,oBAAoB;AACtD,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,MAAMC,0BAA0B,GAAG;EAClCC,KAAK,EAAEF,EAAE,CAAE,OAAQ,CAAC;EACpBG,WAAW,EAAEH,EAAE,CAAE,SAAU,CAAC;EAC5BI,SAAS,EAAEJ,EAAE,CAAE,MAAO,CAAC;EACvBK,SAAS,EAAEL,EAAE,CAAE,MAAO,CAAC;EACvBM,aAAa,EAAEN,EAAE,CAAE,eAAgB,CAAC;EACpCO,aAAa,EAAEP,EAAE,CAAE,eAAgB,CAAC;EACpCQ,cAAc,EAAER,EAAE,CAAE,wBAAyB,CAAC;EAC9CS,sBAAsB,EAAET,EAAE,CAAE,6BAA8B;AAC3D,CAAC;AAED,OAAO,MAAMU,UAAU,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC,cAAc;IAAEC;EAAU,CAAC,GAAGjB,SAAS,CAAIkB,MAAM,IAAM;IAC9D,MAAM;MAAEC,mCAAmC;MAAEC;IAAqB,CAAC,GAClEF,MAAM,CAAEhB,SAAU,CAAC;IAEpB,OAAO;MACNc,cAAc,EAAEG,mCAAmC,CAAC,CAAC;MACrDF,SAAS,EAAEG,oBAAoB,CAAE,MAAM,EAAE,MAAO;IACjD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,kBAAkB,GAAGlB,OAAO,CAAE,MAAM;IACzC;IACA,MAAMmB,yBAAyB,GAAGN,cAAc,CAACO,MAAM,CACpDC,MAAM,IAAM,EAAIA,MAAM,CAACC,IAAI,KAAK,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,CACnE,CAAC;IAED,MAAMC,kBAAkB,GAAG,EAAE;IAC7B,KAAM,MAAMC,QAAQ,IAAIX,SAAS,EAAG;MACnCU,kBAAkB,CAACE,IAAI,CAAE;QACxBJ,IAAI,EAAE,MAAM;QACZC,IAAI,EAAE,MAAM;QACZnB,KAAK,EAAED,0BAA0B,CAAEsB,QAAQ,CAAE,IAAIA,QAAQ;QACzDA;MACD,CAAE,CAAC;IACJ;IAEA,OAAO,CAAE,GAAGN,yBAAyB,EAAE,GAAGK,kBAAkB,CAAE;EAC/D,CAAC,EAAE,CAAEX,cAAc,EAAEC,SAAS,CAAG,CAAC;;EAElC;EACA,MAAM,CAAEa,kBAAkB,EAAEC,sBAAsB,CAAE,GAAG3B,QAAQ,CAAE,EAAG,CAAC;EAErE,MAAM4B,qBAAqB,GAAGA,CAC7B;IAAEP,IAAI;IAAEC,IAAI;IAAEO,GAAG;IAAEL;EAAS,CAAC,EAC7BM,OAAO,KACH;IACJ,IAAKA,OAAO,EAAG;MACdH,sBAAsB,CACrBD,kBAAkB,CAACP,MAAM,CACtBY,GAAG,IACJA,GAAG,CAACV,IAAI,KAAKA,IAAI,IACjBU,GAAG,CAACT,IAAI,KAAKA,IAAI,IACjBS,GAAG,CAACF,GAAG,KAAKA,GAAG,IACfE,GAAG,CAACP,QAAQ,KAAKA,QACnB,CACD,CAAC;IACF,CAAC,MAAM;MACNG,sBAAsB,CAAE,CACvB,GAAGD,kBAAkB,EACrB;QAAEL,IAAI;QAAEC,IAAI;QAAEO,GAAG;QAAEL;MAAS,CAAC,CAC5B,CAAC;IACJ;EACD,CAAC;EAED,MAAMQ,OAAO,GAAGf,kBAAkB,CAACgB,MAAM,GAAGP,kBAAkB,CAACO,MAAM,GAAG,CAAC;EAEzE,OAAO;IACNhB,kBAAkB;IAClBe,OAAO;IACPJ,qBAAqB;IACrBF;EACD,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/editor",
3
- "version": "13.17.0",
3
+ "version": "13.17.1",
4
4
  "description": "Enhanced block editor for WordPress posts.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -31,35 +31,35 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/a11y": "^3.40.0",
35
- "@wordpress/api-fetch": "^6.37.0",
36
- "@wordpress/blob": "^3.40.0",
37
- "@wordpress/block-editor": "^12.8.0",
38
- "@wordpress/blocks": "^12.17.0",
39
- "@wordpress/components": "^25.6.0",
40
- "@wordpress/compose": "^6.17.0",
41
- "@wordpress/core-data": "^6.17.0",
42
- "@wordpress/data": "^9.10.0",
43
- "@wordpress/date": "^4.40.0",
44
- "@wordpress/deprecated": "^3.40.0",
45
- "@wordpress/dom": "^3.40.0",
46
- "@wordpress/element": "^5.17.0",
47
- "@wordpress/hooks": "^3.40.0",
48
- "@wordpress/html-entities": "^3.40.0",
49
- "@wordpress/i18n": "^4.40.0",
50
- "@wordpress/icons": "^9.31.0",
51
- "@wordpress/keyboard-shortcuts": "^4.17.0",
52
- "@wordpress/keycodes": "^3.40.0",
53
- "@wordpress/media-utils": "^4.31.0",
54
- "@wordpress/notices": "^4.8.0",
55
- "@wordpress/patterns": "^1.1.0",
56
- "@wordpress/preferences": "^3.17.0",
57
- "@wordpress/private-apis": "^0.22.0",
58
- "@wordpress/reusable-blocks": "^4.17.0",
59
- "@wordpress/rich-text": "^6.17.0",
60
- "@wordpress/server-side-render": "^4.17.0",
61
- "@wordpress/url": "^3.41.0",
62
- "@wordpress/wordcount": "^3.40.0",
34
+ "@wordpress/a11y": "^3.40.1",
35
+ "@wordpress/api-fetch": "^6.37.1",
36
+ "@wordpress/blob": "^3.40.1",
37
+ "@wordpress/block-editor": "^12.8.1",
38
+ "@wordpress/blocks": "^12.17.1",
39
+ "@wordpress/components": "^25.6.1",
40
+ "@wordpress/compose": "^6.17.1",
41
+ "@wordpress/core-data": "^6.17.1",
42
+ "@wordpress/data": "^9.10.1",
43
+ "@wordpress/date": "^4.40.1",
44
+ "@wordpress/deprecated": "^3.40.1",
45
+ "@wordpress/dom": "^3.40.1",
46
+ "@wordpress/element": "^5.17.1",
47
+ "@wordpress/hooks": "^3.40.1",
48
+ "@wordpress/html-entities": "^3.40.1",
49
+ "@wordpress/i18n": "^4.40.1",
50
+ "@wordpress/icons": "^9.31.1",
51
+ "@wordpress/keyboard-shortcuts": "^4.17.1",
52
+ "@wordpress/keycodes": "^3.40.1",
53
+ "@wordpress/media-utils": "^4.31.1",
54
+ "@wordpress/notices": "^4.8.1",
55
+ "@wordpress/patterns": "^1.1.1",
56
+ "@wordpress/preferences": "^3.17.1",
57
+ "@wordpress/private-apis": "^0.22.1",
58
+ "@wordpress/reusable-blocks": "^4.17.1",
59
+ "@wordpress/rich-text": "^6.17.1",
60
+ "@wordpress/server-side-render": "^4.17.1",
61
+ "@wordpress/url": "^3.41.1",
62
+ "@wordpress/wordcount": "^3.40.1",
63
63
  "classnames": "^2.3.1",
64
64
  "date-fns": "^2.28.0",
65
65
  "memize": "^2.1.0",
@@ -74,5 +74,5 @@
74
74
  "publishConfig": {
75
75
  "access": "public"
76
76
  },
77
- "gitHead": "78a288d55b83a713b2f7d98d5a855c0771a2afc6"
77
+ "gitHead": "bb1fbf87bb0f451744530fc6a85de2dff1263bed"
78
78
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { useSelect } from '@wordpress/data';
5
5
  import { store as coreStore } from '@wordpress/core-data';
6
- import { useState } from '@wordpress/element';
6
+ import { useMemo, useState } from '@wordpress/element';
7
7
  import { __ } from '@wordpress/i18n';
8
8
 
9
9
  const TRANSLATED_SITE_PROPERTIES = {
@@ -18,38 +18,34 @@ const TRANSLATED_SITE_PROPERTIES = {
18
18
  };
19
19
 
20
20
  export const useIsDirty = () => {
21
- const { dirtyEntityRecords } = useSelect( ( select ) => {
22
- const dirtyRecords =
23
- select( coreStore ).__experimentalGetDirtyEntityRecords();
21
+ const { editedEntities, siteEdits } = useSelect( ( select ) => {
22
+ const { __experimentalGetDirtyEntityRecords, getEntityRecordEdits } =
23
+ select( coreStore );
24
24
 
25
+ return {
26
+ editedEntities: __experimentalGetDirtyEntityRecords(),
27
+ siteEdits: getEntityRecordEdits( 'root', 'site' ),
28
+ };
29
+ }, [] );
30
+
31
+ const dirtyEntityRecords = useMemo( () => {
25
32
  // Remove site object and decouple into its edited pieces.
26
- const dirtyRecordsWithoutSite = dirtyRecords.filter(
33
+ const editedEntitiesWithoutSite = editedEntities.filter(
27
34
  ( record ) => ! ( record.kind === 'root' && record.name === 'site' )
28
35
  );
29
36
 
30
- const siteEdits = select( coreStore ).getEntityRecordEdits(
31
- 'root',
32
- 'site'
33
- );
34
-
35
- const siteEditsAsEntities = [];
37
+ const editedSiteEntities = [];
36
38
  for ( const property in siteEdits ) {
37
- siteEditsAsEntities.push( {
39
+ editedSiteEntities.push( {
38
40
  kind: 'root',
39
41
  name: 'site',
40
42
  title: TRANSLATED_SITE_PROPERTIES[ property ] || property,
41
43
  property,
42
44
  } );
43
45
  }
44
- const dirtyRecordsWithSiteItems = [
45
- ...dirtyRecordsWithoutSite,
46
- ...siteEditsAsEntities,
47
- ];
48
46
 
49
- return {
50
- dirtyEntityRecords: dirtyRecordsWithSiteItems,
51
- };
52
- }, [] );
47
+ return [ ...editedEntitiesWithoutSite, ...editedSiteEntities ];
48
+ }, [ editedEntities, siteEdits ] );
53
49
 
54
50
  // Unchecked entities to be ignored by save function.
55
51
  const [ unselectedEntities, _setUnselectedEntities ] = useState( [] );