@usereactify/search 5.23.0 → 5.24.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [5.24.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/release-v5.23.0...release-v5.24.0) (2023-07-30)
6
+
7
+
8
+ ### Features
9
+
10
+ * improve flags logic and expose setFlag helper ([60b5c33](https://bitbucket.org/usereactify/reactify-search-ui/commit/60b5c336000dcd8c066d9e0af9667642c6dbe8cf))
11
+
5
12
  ## [5.23.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/release-v5.22.1...release-v5.23.0) (2023-07-30)
6
13
 
7
14
 
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "5.23.0",
4
+ "version": "5.24.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
@@ -8,12 +8,12 @@ const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const SensorCollection = () => {
11
- const flags = (0, hooks_1.useFlags)();
11
+ const flagsHook = (0, hooks_1.useFlags)();
12
12
  const { options } = (0, hooks_1.useReactifySearchContext)();
13
13
  if (options.mode !== "collection") {
14
14
  return null;
15
15
  }
16
- if (!flags.sensor_collection) {
16
+ if (!flagsHook.flags["reactify-search:flag_sensor_collection"]) {
17
17
  return null;
18
18
  }
19
19
  return (react_1.default.createElement(ReactiveComponent_1.default, { componentId: "SensorCollection", customQuery: () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"SensorCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollection.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAiE;AAE1D,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAC;IACzB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,kBAAkB,EAC9B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,aAAa;gCACnB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,4BAA4B,EAAE,OAAO,CAAC,gBAAgB;qCACvD;iCACF;6BACF;yBACF;wBACD;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,WAAW;gCACjB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,oCAAoC,EAClC,OAAO,CAAC,gBAAgB;qCAC3B;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,gBAAgB,oBA8C3B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFlags, useReactifySearchContext } from \"../../hooks\";\n\nexport const SensorCollection: React.FC = () => {\n const flags = useFlags();\n const { options } = useReactifySearchContext();\n\n if (options.mode !== \"collection\") {\n return null;\n }\n\n if (!flags.sensor_collection) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorCollection\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n nested: {\n path: \"collections\",\n query: {\n term: {\n \"collections.handle.keyword\": options.collectionHandle,\n },\n },\n },\n },\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.collectionHandle.keyword\":\n options.collectionHandle,\n },\n },\n },\n },\n ],\n },\n },\n })}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SensorCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollection.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAiE;AAE1D,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,SAAS,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE;QAC9D,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,kBAAkB,EAC9B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,aAAa;gCACnB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,4BAA4B,EAAE,OAAO,CAAC,gBAAgB;qCACvD;iCACF;6BACF;yBACF;wBACD;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,WAAW;gCACjB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,oCAAoC,EAClC,OAAO,CAAC,gBAAgB;qCAC3B;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,gBAAgB,oBA8C3B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFlags, useReactifySearchContext } from \"../../hooks\";\n\nexport const SensorCollection: React.FC = () => {\n const flagsHook = useFlags();\n const { options } = useReactifySearchContext();\n\n if (options.mode !== \"collection\") {\n return null;\n }\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_collection\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorCollection\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n nested: {\n path: \"collections\",\n query: {\n term: {\n \"collections.handle.keyword\": options.collectionHandle,\n },\n },\n },\n },\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.collectionHandle.keyword\":\n options.collectionHandle,\n },\n },\n },\n },\n ],\n },\n },\n })}\n />\n );\n};\n"]}
@@ -8,12 +8,12 @@ const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const SensorInventoryAvailable = () => {
11
- const flags = (0, hooks_1.useFlags)();
11
+ const flagsHook = (0, hooks_1.useFlags)();
12
12
  const { filterStack } = (0, hooks_1.useFilters)();
13
13
  if (!filterStack || "show_all" === filterStack.inventoryVisibility) {
14
14
  return null;
15
15
  }
16
- if (!flags.sensor_collection) {
16
+ if (!flagsHook.flags["reactify-search:flag_sensor_inventoryavailable"]) {
17
17
  return null;
18
18
  }
19
19
  return (react_1.default.createElement(ReactiveComponent_1.default, { componentId: "SensorInventoryAvailable", customQuery: () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"SensorInventoryAvailable.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorInventoryAvailable.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAmD;AAE5C,MAAM,wBAAwB,GAAa,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,CAAC,mBAAmB,EAAE;QAClE,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,0BAA0B,EACtC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ;wCACE,IAAI,EAAE;4CACJ,IAAI,EAAE;gDACJ,KAAK,EAAE,SAAS;6CACjB;yCACF;qCACF;oCACD;wCACE,MAAM,EAAE;4CACN,IAAI,EAAE,UAAU;4CAChB,KAAK,EAAE;gDACL,KAAK,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;6CACtC;yCACF;qCACF;iCACF;6BACF;yBACF;wBACD;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ,KAAK,EAAE,SAAS;iCACjB;6BACF;yBACF;qBACF;oBACD,oBAAoB,EAAE,GAAG;iBAC1B;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,wBAAwB,4BAsDnC","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFilters, useFlags } from \"../../hooks\";\n\nexport const SensorInventoryAvailable: React.FC = () => {\n const flags = useFlags();\n const { filterStack } = useFilters();\n\n if (!filterStack || \"show_all\" === filterStack.inventoryVisibility) {\n return null;\n }\n\n if (!flags.sensor_collection) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorInventoryAvailable\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n bool: {\n must: [\n {\n term: {\n type: {\n value: \"product\",\n },\n },\n },\n {\n nested: {\n path: \"variants\",\n query: {\n match: { \"variants.available\": true },\n },\n },\n },\n ],\n },\n },\n {\n term: {\n type: {\n value: \"callout\",\n },\n },\n },\n ],\n minimum_should_match: \"1\",\n },\n },\n })}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SensorInventoryAvailable.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorInventoryAvailable.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAmD;AAE5C,MAAM,wBAAwB,GAAa,GAAG,EAAE;IACrD,MAAM,SAAS,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAC7B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,CAAC,mBAAmB,EAAE;QAClE,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gDAAgD,CAAC,EAAE;QACtE,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,0BAA0B,EACtC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ;wCACE,IAAI,EAAE;4CACJ,IAAI,EAAE;gDACJ,KAAK,EAAE,SAAS;6CACjB;yCACF;qCACF;oCACD;wCACE,MAAM,EAAE;4CACN,IAAI,EAAE,UAAU;4CAChB,KAAK,EAAE;gDACL,KAAK,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;6CACtC;yCACF;qCACF;iCACF;6BACF;yBACF;wBACD;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ,KAAK,EAAE,SAAS;iCACjB;6BACF;yBACF;qBACF;oBACD,oBAAoB,EAAE,GAAG;iBAC1B;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,wBAAwB,4BAsDnC","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFilters, useFlags } from \"../../hooks\";\n\nexport const SensorInventoryAvailable: React.FC = () => {\n const flagsHook = useFlags();\n const { filterStack } = useFilters();\n\n if (!filterStack || \"show_all\" === filterStack.inventoryVisibility) {\n return null;\n }\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_inventoryavailable\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorInventoryAvailable\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n bool: {\n must: [\n {\n term: {\n type: {\n value: \"product\",\n },\n },\n },\n {\n nested: {\n path: \"variants\",\n query: {\n match: { \"variants.available\": true },\n },\n },\n },\n ],\n },\n },\n {\n term: {\n type: {\n value: \"callout\",\n },\n },\n },\n ],\n minimum_should_match: \"1\",\n },\n },\n })}\n />\n );\n};\n"]}
@@ -8,8 +8,8 @@ const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const SensorPublished = () => {
11
- const flags = (0, hooks_1.useFlags)();
12
- if (!flags.sensor_published) {
11
+ const flagsHook = (0, hooks_1.useFlags)();
12
+ if (!flagsHook.flags["reactify-search:flag_sensor_published"]) {
13
13
  return null;
14
14
  }
15
15
  return (react_1.default.createElement(ReactiveComponent_1.default, { componentId: "SensorPublished", customQuery: () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"SensorPublished.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorPublished.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAuC;AAEhC,MAAM,eAAe,GAAa,GAAG,EAAE;IAC5C,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAEzB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;QAC3B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,iBAAiB,EAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,KAAK,EAAE;oBACL,SAAS,EAAE,IAAI;iBAChB;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFlags } from \"../../hooks\";\n\nexport const SensorPublished: React.FC = () => {\n const flags = useFlags();\n\n if (!flags.sensor_published) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorPublished\"\n customQuery={() => ({\n query: {\n match: {\n published: true,\n },\n },\n })}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SensorPublished.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorPublished.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAuC;AAEhC,MAAM,eAAe,GAAa,GAAG,EAAE;IAC5C,MAAM,SAAS,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAE7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,uCAAuC,CAAC,EAAE;QAC7D,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,iBAAiB,EAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,KAAK,EAAE;oBACL,SAAS,EAAE,IAAI;iBAChB;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFlags } from \"../../hooks\";\n\nexport const SensorPublished: React.FC = () => {\n const flagsHook = useFlags();\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_published\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorPublished\"\n customQuery={() => ({\n query: {\n match: {\n published: true,\n },\n },\n })}\n />\n );\n};\n"]}
@@ -9,7 +9,7 @@ const ahooks_1 = require("ahooks");
9
9
  const DataSearch_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/search/DataSearch"));
10
10
  const hooks_1 = require("../../hooks");
11
11
  const SensorSearchTerm = () => {
12
- const flags = (0, hooks_1.useFlags)();
12
+ const flagsHook = (0, hooks_1.useFlags)();
13
13
  const { options, config } = (0, hooks_1.useReactifySearchContext)();
14
14
  const { track } = (0, hooks_1.useAnalytics)();
15
15
  const { searchTerm } = (0, hooks_1.useSearch)();
@@ -46,13 +46,14 @@ const SensorSearchTerm = () => {
46
46
  if (searchFields.length === 0) {
47
47
  return null;
48
48
  }
49
- if (!flags.sensor_searchterm) {
49
+ if (!flagsHook.flags["reactify-search:flag_sensor_searchterm"]) {
50
50
  return null;
51
51
  }
52
52
  return (react_1.default.createElement(react_1.default.Fragment, null,
53
53
  react_1.default.createElement(DataSearch_1.default, { fuzziness: 1, queryFormat: "and", autosuggest: false, value: searchTermDebounced, componentId: "SensorSearchTerm", style: { display: "none" }, dataField: searchFields.map((field) => field.field), fieldWeights: searchFields.map((field) => field.importance), customQuery: (value, props) => {
54
54
  const conditions = [];
55
- if (flags.sensor_searchterm_value && value) {
55
+ if (flagsHook.flags["reactify-search:flag_sensor_searchterm_value"] &&
56
+ value) {
56
57
  conditions.push({
57
58
  nested: {
58
59
  path: "curations",
@@ -65,7 +66,8 @@ const SensorSearchTerm = () => {
65
66
  });
66
67
  }
67
68
  const fieldsPhrase = props.dataField.map((field, index) => `${field}^${props.fieldWeights[index]}`);
68
- if (flags.sensor_searchterm_phrase && fieldsPhrase.length > 0) {
69
+ if (flagsHook.flags["reactify-search:flag_sensor_searchterm_phrase"] &&
70
+ fieldsPhrase.length > 0) {
69
71
  conditions.push({
70
72
  multi_match: {
71
73
  query: value,
@@ -78,7 +80,7 @@ const SensorSearchTerm = () => {
78
80
  const fieldsPhrasePrefix = props.dataField
79
81
  .map((field, index) => `${field}^${props.fieldWeights[index]}`)
80
82
  .filter((field) => !field.includes("."));
81
- if (flags.sensor_searchterm_phrase_prefix &&
83
+ if (flagsHook.flags["reactify-search:flag_sensor_searchterm_phrase_prefix"] &&
82
84
  fieldsPhrasePrefix.length > 0) {
83
85
  conditions.push({
84
86
  multi_match: {
@@ -90,7 +92,7 @@ const SensorSearchTerm = () => {
90
92
  });
91
93
  }
92
94
  const fieldsCrossFields = props.dataField.map((field, index) => `${field}^${props.fieldWeights[index]}`);
93
- if (flags.sensor_searchterm_cross_fields &&
95
+ if (flagsHook.flags["reactify-search:flag_sensor_searchterm_cross_fields"] &&
94
96
  fieldsCrossFields.length > 0) {
95
97
  conditions.push({
96
98
  multi_match: {
@@ -116,7 +118,7 @@ const SensorSearchTerm = () => {
116
118
  end: 1,
117
119
  },
118
120
  }));
119
- if (flags.sensor_searchterm_span_first &&
121
+ if (flagsHook.flags["reactify-search:flag_sensor_searchterm_span_first"] &&
120
122
  fieldsSpanFirst.length > 0) {
121
123
  conditions.push(...fieldsSpanFirst);
122
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SensorSearchTerm.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchTerm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\nimport DataSearch from \"@appbaseio/reactivesearch/lib/components/search/DataSearch\";\n\nimport {\n useAnalytics,\n useFlags,\n useReactifySearchContext,\n useSearch,\n} from \"../../hooks\";\n\nexport const SensorSearchTerm: React.FC = () => {\n const flags = useFlags();\n const { options, config } = useReactifySearchContext();\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const [searchTermDebounced, setSearchTermDebounced] =\n React.useState<string>(searchTerm);\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(() => {\n if (options.mode === \"search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n );\n }\n\n if (options.mode === \"instant-search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"instant_search\"].includes(field.searchType)\n );\n }\n\n return [];\n }, [config.fields]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } =\n useDebounceFn(\n (value: string) => {\n setSearchTermDebounced(value);\n\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"search\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n },\n {\n wait: 300,\n }\n );\n\n React.useEffect(() => {\n runDebouncedTriggerQuery(searchTerm);\n }, [searchTerm]);\n\n if (searchFields.length === 0) {\n return null;\n }\n\n if (!flags.sensor_searchterm) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchTermDebounced}\n componentId=\"SensorSearchTerm\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const conditions: Array<unknown> = [];\n\n if (flags.sensor_searchterm_value && value) {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": value.toLowerCase(),\n },\n },\n },\n });\n }\n\n const fieldsPhrase = props.dataField.map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (flags.sensor_searchterm_phrase && fieldsPhrase.length > 0) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsPhrasePrefix = props.dataField\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n )\n .filter((field: string) => !field.includes(\".\"));\n\n if (\n flags.sensor_searchterm_phrase_prefix &&\n fieldsPhrasePrefix.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsCrossFields = props.dataField.map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flags.sensor_searchterm_cross_fields &&\n fieldsCrossFields.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsSpanFirst: any = props.dataField\n .filter((field: string) => {\n if (field.endsWith(\".keyword\")) {\n return false;\n }\n\n return true;\n })\n .map((field: string) => ({\n span_first: {\n match: {\n span_term: { [`${field}`]: value },\n },\n end: 1,\n },\n }));\n if (\n flags.sensor_searchterm_span_first &&\n fieldsSpanFirst.length > 0\n ) {\n conditions.push(...fieldsSpanFirst);\n }\n\n return {\n query: {\n bool: {\n should: conditions,\n minimum_should_match: \"1\",\n },\n },\n };\n }}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"SensorSearchTerm.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchTerm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\nimport DataSearch from \"@appbaseio/reactivesearch/lib/components/search/DataSearch\";\n\nimport {\n useAnalytics,\n useFlags,\n useReactifySearchContext,\n useSearch,\n} from \"../../hooks\";\n\nexport const SensorSearchTerm: React.FC = () => {\n const flagsHook = useFlags();\n const { options, config } = useReactifySearchContext();\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const [searchTermDebounced, setSearchTermDebounced] =\n React.useState<string>(searchTerm);\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(() => {\n if (options.mode === \"search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n );\n }\n\n if (options.mode === \"instant-search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"instant_search\"].includes(field.searchType)\n );\n }\n\n return [];\n }, [config.fields]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } =\n useDebounceFn(\n (value: string) => {\n setSearchTermDebounced(value);\n\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"search\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n },\n {\n wait: 300,\n }\n );\n\n React.useEffect(() => {\n runDebouncedTriggerQuery(searchTerm);\n }, [searchTerm]);\n\n if (searchFields.length === 0) {\n return null;\n }\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_searchterm\"]) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchTermDebounced}\n componentId=\"SensorSearchTerm\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const conditions: Array<unknown> = [];\n\n if (\n flagsHook.flags[\"reactify-search:flag_sensor_searchterm_value\"] &&\n value\n ) {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": value.toLowerCase(),\n },\n },\n },\n });\n }\n\n const fieldsPhrase = props.dataField.map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flagsHook.flags[\"reactify-search:flag_sensor_searchterm_phrase\"] &&\n fieldsPhrase.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsPhrasePrefix = props.dataField\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n )\n .filter((field: string) => !field.includes(\".\"));\n\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_prefix\"\n ] &&\n fieldsPhrasePrefix.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsCrossFields = props.dataField.map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_cross_fields\"\n ] &&\n fieldsCrossFields.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsSpanFirst: any = props.dataField\n .filter((field: string) => {\n if (field.endsWith(\".keyword\")) {\n return false;\n }\n\n return true;\n })\n .map((field: string) => ({\n span_first: {\n match: {\n span_term: { [`${field}`]: value },\n },\n end: 1,\n },\n }));\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_span_first\"\n ] &&\n fieldsSpanFirst.length > 0\n ) {\n conditions.push(...fieldsSpanFirst);\n }\n\n return {\n query: {\n bool: {\n should: conditions,\n minimum_should_match: \"1\",\n },\n },\n };\n }}\n />\n </>\n );\n};\n"]}
@@ -8,7 +8,7 @@ const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const SensorSort = () => {
11
- const flags = (0, hooks_1.useFlags)();
11
+ const flagsHook = (0, hooks_1.useFlags)();
12
12
  const { options, config } = (0, hooks_1.useReactifySearchContext)();
13
13
  const { curation } = (0, hooks_1.useCuration)();
14
14
  const { sortOption } = (0, hooks_1.useSortBy)();
@@ -26,7 +26,7 @@ const SensorSort = () => {
26
26
  }),
27
27
  };
28
28
  }, [options, config, sortOption, curation]);
29
- if (!flags.sensor_sort) {
29
+ if (!flagsHook.flags["reactify-search:flag_sensor_sort"]) {
30
30
  return null;
31
31
  }
32
32
  return (react_1.default.createElement(ReactiveComponent_1.default, { componentId: "SensorSort", customQuery: () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"SensorSort.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSort.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { ConfigCuration, ConfigSort } from \"../../types\";\nimport {\n useReactifySearchContext,\n useSortBy,\n useCuration,\n ReactifySearchMode,\n useFlags,\n} from \"../../hooks\";\n\nexport const SensorSort: React.FC = () => {\n const flags = useFlags();\n const { options, config } = useReactifySearchContext();\n const { curation } = useCuration();\n const { sortOption } = useSortBy();\n\n const { sort, query } = React.useMemo(() => {\n return {\n sort: buildSort({\n mode: options.mode,\n curation,\n sortOption,\n collectionHandle:\n options.mode === \"collection\" ? options.collectionHandle : undefined,\n }),\n query: buildQuery({\n sortOption,\n curation,\n }),\n };\n }, [options, config, sortOption, curation]);\n\n if (!flags.sensor_sort) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorSort\"\n customQuery={() => ({\n sort,\n query,\n })}\n />\n );\n};\n\nconst buildSort = (args: {\n mode: ReactifySearchMode;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n collectionHandle?: string;\n}): any[] => {\n const { mode, curation, sortOption, collectionHandle } = args;\n\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (mode !== \"instant-search\") {\n if (\n sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ) {\n return [{ [sortOption.field]: sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (mode === \"collection\" && collectionHandle) {\n if (curation?.collectionHandle) {\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n term: {\n [`curations.collectionHandle.keyword`]:\n curation.collectionHandle,\n },\n },\n },\n },\n });\n }\n }\n\n // search curation pin sorting\n if (mode === \"search\" || mode === \"instant-search\") {\n if (curation?.searchTerm) {\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n term: {\n [`curations.searchTerm.keyword`]:\n curation.searchTerm?.toLowerCase(),\n },\n },\n },\n },\n });\n }\n }\n\n // curation boost sorting\n if (curation) {\n if (0 < curation.boosting.groupings.length) {\n const groupings = curation.boosting.groupings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(\n `query could not be parsed for boost grouping`,\n grouping\n );\n }\n }\n }\n\n if (0 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n const query = JSON.parse(sorting.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n }\n\n // default collection sorting\n if (mode === \"collection\" && collectionHandle) {\n sorts.push(...mapCollectionPositionSortClause(collectionHandle));\n }\n\n // default search sorting\n if (mode === \"search\" || mode === \"instant-search\") {\n sorts.push(\"_score\");\n }\n\n return sorts;\n};\n\n/**\n * Return a sort clause which sorts by position within the given collection.\n */\nfunction mapCollectionPositionSortClause(collectionHandle: string) {\n return [\n {\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": collectionHandle,\n },\n },\n },\n },\n },\n ];\n}\n\nconst buildQuery = (args: {\n sortOption?: ConfigSort;\n curation?: ConfigCuration;\n}): Record<string, any> | undefined => {\n const { curation, sortOption } = args;\n\n if (\n !curation ||\n [\"global_collection\", \"global_search\"].includes(curation.id)\n ) {\n return undefined;\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n },\n ],\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
1
+ {"version":3,"file":"SensorSort.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSort.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { ConfigCuration, ConfigSort } from \"../../types\";\nimport {\n useReactifySearchContext,\n useSortBy,\n useCuration,\n ReactifySearchMode,\n useFlags,\n} from \"../../hooks\";\n\nexport const SensorSort: React.FC = () => {\n const flagsHook = useFlags();\n const { options, config } = useReactifySearchContext();\n const { curation } = useCuration();\n const { sortOption } = useSortBy();\n\n const { sort, query } = React.useMemo(() => {\n return {\n sort: buildSort({\n mode: options.mode,\n curation,\n sortOption,\n collectionHandle:\n options.mode === \"collection\" ? options.collectionHandle : undefined,\n }),\n query: buildQuery({\n sortOption,\n curation,\n }),\n };\n }, [options, config, sortOption, curation]);\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_sort\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorSort\"\n customQuery={() => ({\n sort,\n query,\n })}\n />\n );\n};\n\nconst buildSort = (args: {\n mode: ReactifySearchMode;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n collectionHandle?: string;\n}): any[] => {\n const { mode, curation, sortOption, collectionHandle } = args;\n\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (mode !== \"instant-search\") {\n if (\n sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ) {\n return [{ [sortOption.field]: sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (mode === \"collection\" && collectionHandle) {\n if (curation?.collectionHandle) {\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n term: {\n [`curations.collectionHandle.keyword`]:\n curation.collectionHandle,\n },\n },\n },\n },\n });\n }\n }\n\n // search curation pin sorting\n if (mode === \"search\" || mode === \"instant-search\") {\n if (curation?.searchTerm) {\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n term: {\n [`curations.searchTerm.keyword`]:\n curation.searchTerm?.toLowerCase(),\n },\n },\n },\n },\n });\n }\n }\n\n // curation boost sorting\n if (curation) {\n if (0 < curation.boosting.groupings.length) {\n const groupings = curation.boosting.groupings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(\n `query could not be parsed for boost grouping`,\n grouping\n );\n }\n }\n }\n\n if (0 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n const query = JSON.parse(sorting.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n }\n\n // default collection sorting\n if (mode === \"collection\" && collectionHandle) {\n sorts.push(...mapCollectionPositionSortClause(collectionHandle));\n }\n\n // default search sorting\n if (mode === \"search\" || mode === \"instant-search\") {\n sorts.push(\"_score\");\n }\n\n return sorts;\n};\n\n/**\n * Return a sort clause which sorts by position within the given collection.\n */\nfunction mapCollectionPositionSortClause(collectionHandle: string) {\n return [\n {\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": collectionHandle,\n },\n },\n },\n },\n },\n ];\n}\n\nconst buildQuery = (args: {\n sortOption?: ConfigSort;\n curation?: ConfigCuration;\n}): Record<string, any> | undefined => {\n const { curation, sortOption } = args;\n\n if (\n !curation ||\n [\"global_collection\", \"global_search\"].includes(curation.id)\n ) {\n return undefined;\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n },\n ],\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
@@ -1,11 +1,17 @@
1
+ export declare enum Flags {
2
+ SENSOR_SORT = "reactify-search:flag_sensor_sort",
3
+ SENSOR_COLLECTION = "reactify-search:flag_sensor_collection",
4
+ SENSOR_PUBLISHED = "reactify-search:flag_sensor_published",
5
+ SENSOR_INVENTORYAVAILABLE = "reactify-search:flag_sensor_inventoryavailable",
6
+ SENSOR_SEARCHTERM = "reactify-search:flag_sensor_searchterm",
7
+ SENSOR_SEARCHTERM_VALUE = "reactify-search:flag_sensor_searchterm_value",
8
+ SENSOR_SEARCHTERM_PHRASE = "reactify-search:flag_sensor_searchterm_phrase",
9
+ SENSOR_SEARCHTERM_PHRASE_PREFIX = "reactify-search:flag_sensor_searchterm_phrase_prefix",
10
+ SENSOR_SEARCHTERM_CROSS_FIELDS = "reactify-search:flag_sensor_searchterm_cross_fields",
11
+ SENSOR_SEARCHTERM_SPAN_FIRST = "reactify-search:flag_sensor_searchterm_span_first"
12
+ }
1
13
  export declare const useFlags: () => {
2
- sensor_sort: boolean;
3
- sensor_collection: boolean;
4
- sensor_published: boolean;
5
- sensor_searchterm: boolean;
6
- sensor_searchterm_value: boolean;
7
- sensor_searchterm_phrase: boolean;
8
- sensor_searchterm_phrase_prefix: boolean;
9
- sensor_searchterm_cross_fields: boolean;
10
- sensor_searchterm_span_first: boolean;
14
+ flags: Record<Flags, boolean>;
15
+ setFlag: (flag: Flags, value: boolean) => void;
16
+ getFlag: (flag: Flags) => boolean;
11
17
  };
@@ -3,53 +3,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useFlags = void 0;
6
+ exports.useFlags = exports.Flags = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
+ var Flags;
9
+ (function (Flags) {
10
+ Flags["SENSOR_SORT"] = "reactify-search:flag_sensor_sort";
11
+ Flags["SENSOR_COLLECTION"] = "reactify-search:flag_sensor_collection";
12
+ Flags["SENSOR_PUBLISHED"] = "reactify-search:flag_sensor_published";
13
+ Flags["SENSOR_INVENTORYAVAILABLE"] = "reactify-search:flag_sensor_inventoryavailable";
14
+ Flags["SENSOR_SEARCHTERM"] = "reactify-search:flag_sensor_searchterm";
15
+ Flags["SENSOR_SEARCHTERM_VALUE"] = "reactify-search:flag_sensor_searchterm_value";
16
+ Flags["SENSOR_SEARCHTERM_PHRASE"] = "reactify-search:flag_sensor_searchterm_phrase";
17
+ Flags["SENSOR_SEARCHTERM_PHRASE_PREFIX"] = "reactify-search:flag_sensor_searchterm_phrase_prefix";
18
+ Flags["SENSOR_SEARCHTERM_CROSS_FIELDS"] = "reactify-search:flag_sensor_searchterm_cross_fields";
19
+ Flags["SENSOR_SEARCHTERM_SPAN_FIRST"] = "reactify-search:flag_sensor_searchterm_span_first";
20
+ })(Flags = exports.Flags || (exports.Flags = {}));
8
21
  const useFlags = () => {
9
- const flags = react_1.default.useMemo(() => ({
10
- sensor_sort: sessionStorage.getItem("reactify-search:flag_sensor_sort") === "false"
11
- ? false
12
- : true,
13
- sensor_collection: sessionStorage.getItem("reactify-search:flag_sensor_collection") ===
14
- "false"
15
- ? false
16
- : true,
17
- sensor_published: sessionStorage.getItem("reactify-search:flag_sensor_published") ===
18
- "false"
19
- ? false
20
- : true,
21
- sensor_searchterm: sessionStorage.getItem("reactify-search:flag_sensor_searchterm") ===
22
- "false"
23
- ? false
24
- : true,
25
- sensor_searchterm_value: sessionStorage.getItem("reactify-search:flag_sensor_searchterm_value") === "false"
26
- ? false
27
- : true,
28
- sensor_searchterm_phrase: sessionStorage.getItem("reactify-search:flag_sensor_searchterm_phrase") === "false"
29
- ? false
30
- : true,
31
- sensor_searchterm_phrase_prefix: sessionStorage.getItem("reactify-search:flag_sensor_searchterm_phrase_prefix") === "false"
32
- ? false
33
- : true,
34
- sensor_searchterm_cross_fields: sessionStorage.getItem("reactify-search:flag_sensor_searchterm_cross_fields") === "false"
35
- ? false
36
- : true,
37
- sensor_searchterm_span_first: sessionStorage.getItem("reactify-search:flag_sensor_searchterm_span_first") === "false"
38
- ? false
39
- : true,
40
- }), []);
22
+ const [delta, setDelta] = react_1.default.useState(Date.now());
23
+ const getFlag = react_1.default.useCallback((flag) => {
24
+ return sessionStorage.getItem(flag) === "false" ? false : true;
25
+ }, [delta]);
26
+ const setFlag = react_1.default.useCallback((flag, value) => {
27
+ sessionStorage.setItem(flag, `${value}`);
28
+ setDelta(Date.now());
29
+ }, [delta]);
30
+ const flags = react_1.default.useMemo(() => {
31
+ return Object.values(Flags).reduce((acc, flag) => (Object.assign(Object.assign({}, acc), { [flag]: getFlag(flag) })), {});
32
+ }, [delta]);
41
33
  react_1.default.useEffect(() => {
42
- sessionStorage.setItem("reactify-search:flag_sensor_sort", `${flags.sensor_sort}`);
43
- sessionStorage.setItem("reactify-search:flag_sensor_collection", `${flags.sensor_collection}`);
44
- sessionStorage.setItem("reactify-search:flag_sensor_published", `${flags.sensor_published}`);
45
- sessionStorage.setItem("reactify-search:flag_sensor_searchterm", `${flags.sensor_searchterm}`);
46
- sessionStorage.setItem("reactify-search:flag_sensor_searchterm_value", `${flags.sensor_searchterm_value}`);
47
- sessionStorage.setItem("reactify-search:flag_sensor_searchterm_phrase", `${flags.sensor_searchterm_phrase}`);
48
- sessionStorage.setItem("reactify-search:flag_sensor_searchterm_phrase_prefix", `${flags.sensor_searchterm_phrase_prefix}`);
49
- sessionStorage.setItem("reactify-search:flag_sensor_searchterm_cross_fields", `${flags.sensor_searchterm_cross_fields}`);
50
- sessionStorage.setItem("reactify-search:flag_sensor_searchterm_span_first", `${flags.sensor_searchterm_span_first}`);
34
+ for (const flag of Object.values(Flags)) {
35
+ setFlag(flag, getFlag(flag));
36
+ }
51
37
  }, [flags]);
52
- return flags;
38
+ return {
39
+ flags: flags,
40
+ setFlag: setFlag,
41
+ getFlag: getFlag,
42
+ };
53
43
  };
54
44
  exports.useFlags = useFlags;
55
45
  //# sourceMappingURL=useFlags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFlags.js","sourceRoot":"","sources":["../../../src/hooks/useFlags.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAEnB,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG,eAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC;QACL,WAAW,EACT,cAAc,CAAC,OAAO,CAAC,kCAAkC,CAAC,KAAK,OAAO;YACpE,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,iBAAiB,EACf,cAAc,CAAC,OAAO,CAAC,wCAAwC,CAAC;YAChE,OAAO;YACL,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,gBAAgB,EACd,cAAc,CAAC,OAAO,CAAC,uCAAuC,CAAC;YAC/D,OAAO;YACL,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,iBAAiB,EACf,cAAc,CAAC,OAAO,CAAC,wCAAwC,CAAC;YAChE,OAAO;YACL,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,uBAAuB,EACrB,cAAc,CAAC,OAAO,CACpB,8CAA8C,CAC/C,KAAK,OAAO;YACX,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,wBAAwB,EACtB,cAAc,CAAC,OAAO,CACpB,+CAA+C,CAChD,KAAK,OAAO;YACX,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,+BAA+B,EAC7B,cAAc,CAAC,OAAO,CACpB,sDAAsD,CACvD,KAAK,OAAO;YACX,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,8BAA8B,EAC5B,cAAc,CAAC,OAAO,CACpB,qDAAqD,CACtD,KAAK,OAAO;YACX,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;QACV,4BAA4B,EAC1B,cAAc,CAAC,OAAO,CACpB,mDAAmD,CACpD,KAAK,OAAO;YACX,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;KACX,CAAC,EACF,EAAE,CACH,CAAC;IAEF,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,cAAc,CAAC,OAAO,CACpB,kCAAkC,EAClC,GAAG,KAAK,CAAC,WAAW,EAAE,CACvB,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,wCAAwC,EACxC,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAC7B,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,uCAAuC,EACvC,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAC5B,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,wCAAwC,EACxC,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAC7B,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,8CAA8C,EAC9C,GAAG,KAAK,CAAC,uBAAuB,EAAE,CACnC,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,+CAA+C,EAC/C,GAAG,KAAK,CAAC,wBAAwB,EAAE,CACpC,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,sDAAsD,EACtD,GAAG,KAAK,CAAC,+BAA+B,EAAE,CAC3C,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,qDAAqD,EACrD,GAAG,KAAK,CAAC,8BAA8B,EAAE,CAC1C,CAAC;QACF,cAAc,CAAC,OAAO,CACpB,mDAAmD,EACnD,GAAG,KAAK,CAAC,4BAA4B,EAAE,CACxC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAhGW,QAAA,QAAQ,YAgGnB","sourcesContent":["import React from \"react\";\n\nexport const useFlags = () => {\n const flags = React.useMemo(\n () => ({\n sensor_sort:\n sessionStorage.getItem(\"reactify-search:flag_sensor_sort\") === \"false\"\n ? false\n : true,\n sensor_collection:\n sessionStorage.getItem(\"reactify-search:flag_sensor_collection\") ===\n \"false\"\n ? false\n : true,\n sensor_published:\n sessionStorage.getItem(\"reactify-search:flag_sensor_published\") ===\n \"false\"\n ? false\n : true,\n sensor_searchterm:\n sessionStorage.getItem(\"reactify-search:flag_sensor_searchterm\") ===\n \"false\"\n ? false\n : true,\n sensor_searchterm_value:\n sessionStorage.getItem(\n \"reactify-search:flag_sensor_searchterm_value\"\n ) === \"false\"\n ? false\n : true,\n sensor_searchterm_phrase:\n sessionStorage.getItem(\n \"reactify-search:flag_sensor_searchterm_phrase\"\n ) === \"false\"\n ? false\n : true,\n sensor_searchterm_phrase_prefix:\n sessionStorage.getItem(\n \"reactify-search:flag_sensor_searchterm_phrase_prefix\"\n ) === \"false\"\n ? false\n : true,\n sensor_searchterm_cross_fields:\n sessionStorage.getItem(\n \"reactify-search:flag_sensor_searchterm_cross_fields\"\n ) === \"false\"\n ? false\n : true,\n sensor_searchterm_span_first:\n sessionStorage.getItem(\n \"reactify-search:flag_sensor_searchterm_span_first\"\n ) === \"false\"\n ? false\n : true,\n }),\n []\n );\n\n React.useEffect(() => {\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_sort\",\n `${flags.sensor_sort}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_collection\",\n `${flags.sensor_collection}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_published\",\n `${flags.sensor_published}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_searchterm\",\n `${flags.sensor_searchterm}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_searchterm_value\",\n `${flags.sensor_searchterm_value}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_searchterm_phrase\",\n `${flags.sensor_searchterm_phrase}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_searchterm_phrase_prefix\",\n `${flags.sensor_searchterm_phrase_prefix}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_searchterm_cross_fields\",\n `${flags.sensor_searchterm_cross_fields}`\n );\n sessionStorage.setItem(\n \"reactify-search:flag_sensor_searchterm_span_first\",\n `${flags.sensor_searchterm_span_first}`\n );\n }, [flags]);\n\n return flags;\n};\n"]}
1
+ {"version":3,"file":"useFlags.js","sourceRoot":"","sources":["../../../src/hooks/useFlags.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,IAAY,KAWX;AAXD,WAAY,KAAK;IACf,yDAAgD,CAAA;IAChD,qEAA4D,CAAA;IAC5D,mEAA0D,CAAA;IAC1D,qFAA4E,CAAA;IAC5E,qEAA4D,CAAA;IAC5D,iFAAwE,CAAA;IACxE,mFAA0E,CAAA;IAC1E,iGAAwF,CAAA;IACxF,+FAAsF,CAAA;IACtF,2FAAkF,CAAA;AACpF,CAAC,EAXW,KAAK,GAAL,aAAK,KAAL,aAAK,QAWhB;AAEM,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,eAAK,CAAC,WAAW,CAC/B,CAAC,IAAW,EAAW,EAAE;QACvB,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,OAAO,GAAG,eAAK,CAAC,WAAW,CAC/B,CAAC,IAAW,EAAE,KAAc,EAAE,EAAE;QAC9B,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,KAAK,GAAG,eAAK,CAAC,OAAO,CAAyB,GAAG,EAAE;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAChC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,iCACV,GAAG,KACN,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IACrB,EACF,EAA4B,CAC7B,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACvC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9B;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,QAAQ,YAuCnB","sourcesContent":["import React from \"react\";\n\nexport enum Flags {\n SENSOR_SORT = \"reactify-search:flag_sensor_sort\",\n SENSOR_COLLECTION = \"reactify-search:flag_sensor_collection\",\n SENSOR_PUBLISHED = \"reactify-search:flag_sensor_published\",\n SENSOR_INVENTORYAVAILABLE = \"reactify-search:flag_sensor_inventoryavailable\",\n SENSOR_SEARCHTERM = \"reactify-search:flag_sensor_searchterm\",\n SENSOR_SEARCHTERM_VALUE = \"reactify-search:flag_sensor_searchterm_value\",\n SENSOR_SEARCHTERM_PHRASE = \"reactify-search:flag_sensor_searchterm_phrase\",\n SENSOR_SEARCHTERM_PHRASE_PREFIX = \"reactify-search:flag_sensor_searchterm_phrase_prefix\",\n SENSOR_SEARCHTERM_CROSS_FIELDS = \"reactify-search:flag_sensor_searchterm_cross_fields\",\n SENSOR_SEARCHTERM_SPAN_FIRST = \"reactify-search:flag_sensor_searchterm_span_first\",\n}\n\nexport const useFlags = () => {\n const [delta, setDelta] = React.useState<number>(Date.now());\n\n const getFlag = React.useCallback(\n (flag: Flags): boolean => {\n return sessionStorage.getItem(flag) === \"false\" ? false : true;\n },\n [delta]\n );\n\n const setFlag = React.useCallback(\n (flag: Flags, value: boolean) => {\n sessionStorage.setItem(flag, `${value}`);\n setDelta(Date.now());\n },\n [delta]\n );\n\n const flags = React.useMemo<Record<Flags, boolean>>(() => {\n return Object.values(Flags).reduce<Record<Flags, boolean>>(\n (acc, flag) => ({\n ...acc,\n [flag]: getFlag(flag),\n }),\n {} as Record<Flags, boolean>\n );\n }, [delta]);\n\n React.useEffect(() => {\n for (const flag of Object.values(Flags)) {\n setFlag(flag, getFlag(flag));\n }\n }, [flags]);\n\n return {\n flags: flags,\n setFlag: setFlag,\n getFlag: getFlag,\n };\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "5.23.0",
4
+ "version": "5.24.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",