@inseefr/lunatic 2.6.3 → 2.6.5

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.
@@ -4,14 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
- var _react = require("react");
8
7
  var _classnames = _interopRequireDefault(require("classnames"));
9
- var _commons = require("../../commons");
10
- var _icons = require("../../commons/icons");
8
+ var _react = require("react");
11
9
  var _reactKeyboardEventHandler = _interopRequireDefault(require("react-keyboard-event-handler"));
12
10
  var _function = require("../../../utils/function");
11
+ var _commons = require("../../commons");
12
+ var _icons = require("../../commons/icons");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+ /* eslint-disable jsx-a11y/role-supports-aria-props */
16
+
15
17
  function RadioOption(_ref) {
16
18
  var checked = _ref.checked,
17
19
  _ref$onClick = _ref.onClick,
@@ -16,7 +16,7 @@ function useAutoFocus(wrapperRef, key) {
16
16
  }
17
17
 
18
18
  // First look for invalid fields, then all fields
19
- var firstFocusableElement = (_ref = (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.querySelector('button[aria-invalid], [href][aria-invalid], input[aria-invalid], select[aria-invalid], textarea[aria-invalid], [tabindex][aria-invalid]:not([tabindex="-1"])')) !== null && _ref !== void 0 ? _ref : (_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
19
+ var firstFocusableElement = (_ref = (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.querySelector('button[aria-invalid="true"], [href][aria-invalid="true"], input[aria-invalid="true"], select[aria-invalid="true"], textarea[aria-invalid="true"], [tabindex][aria-invalid="true"]:not([tabindex="-1"])')) !== null && _ref !== void 0 ? _ref : (_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
20
20
 
21
21
  // The first element can be focusable
22
22
  if (firstFocusableElement) {
@@ -1,4 +1,4 @@
1
- import type { LunaticState } from '../../type';
2
1
  import { type ActionHandleChange } from '../../actions';
2
+ import type { LunaticState } from '../../type';
3
3
  declare function reduceResizing(state: LunaticState, action: ActionHandleChange): LunaticState;
4
4
  export default reduceResizing;
@@ -1,7 +1,8 @@
1
1
  export type Entity = Record<string, unknown> & {
2
2
  id: string | number;
3
3
  suggestion: {
4
- label: string;
4
+ label?: string;
5
+ id: string;
5
6
  };
6
7
  tokensSearch: {};
7
8
  };
@@ -3,10 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.Default = void 0;
6
+ exports["default"] = exports.ResizingWithCleaning = exports.Default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _orchestrator = _interopRequireDefault(require("../../utils/orchestrator"));
9
9
  var _source = _interopRequireDefault(require("./source.json"));
10
+ var _sourceResizingCleaning = _interopRequireDefault(require("./source-resizing-cleaning.json"));
10
11
  var _defaultArgTypes = _interopRequireDefault(require("../../utils/default-arg-types"));
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -81,4 +82,11 @@ exports.Default = Default;
81
82
  Default.args = {
82
83
  id: 'resizing-default',
83
84
  pagination: true
85
+ };
86
+ var ResizingWithCleaning = Template.bind({});
87
+ exports.ResizingWithCleaning = ResizingWithCleaning;
88
+ ResizingWithCleaning.args = {
89
+ id: 'resizing-with-cleaning',
90
+ source: _sourceResizingCleaning["default"],
91
+ pagination: true
84
92
  };
@@ -0,0 +1,171 @@
1
+ {
2
+ "id": "lfrzny8b",
3
+ "modele": "RP",
4
+ "enoCoreVersion": "2.4.1",
5
+ "lunaticModelVersion": "2.3.1",
6
+ "generatingDate": "28-03-2023 12:57:35",
7
+ "missing": false,
8
+ "pagination": "question",
9
+ "maxPage": "2",
10
+ "label": {
11
+ "value": "\"Resizing with cleaning\"",
12
+ "type": "VTL|MD"
13
+ },
14
+ "components": [
15
+ {
16
+ "page": "1",
17
+ "id": "lfwih8tj-habitants",
18
+ "componentType": "InputNumber",
19
+ "mandatory": false,
20
+ "min": 0,
21
+ "max": 25,
22
+ "label": {
23
+ "value": "\"Nombre d'habitant(s) \"",
24
+ "type": "VTL"
25
+ },
26
+ "declarations": [
27
+ {
28
+ "id": "kb9hi4j0-krnoclfe",
29
+ "declarationType": "HELP",
30
+ "position": "DETACHABLE",
31
+ "label": {
32
+ "value": "\"Changing this value should both clean and resize 'PRENOMS'\"",
33
+ "type": "VTL|MD"
34
+ }
35
+ }
36
+ ],
37
+ "controls": [
38
+ {
39
+ "id": "lfwih8tj-habitants-CI-0",
40
+ "typeOfControl": "CONSISTENCY",
41
+ "criticality": "ERROR",
42
+ "control": {
43
+ "value": "not(isnull(NB))",
44
+ "type": "VTL"
45
+ },
46
+ "errorMessage": {
47
+ "value": "\"Veuillez entrer un nombre d'habitant(s)\"",
48
+ "type": "VTL"
49
+ }
50
+ },
51
+ {
52
+ "id": "lfwih8tj-habitants-CI-1",
53
+ "typeOfControl": "CONSISTENCY",
54
+ "criticality": "ERROR",
55
+ "control": {
56
+ "value": "isnull(NB) or NB >= 0",
57
+ "type": "VTL"
58
+ },
59
+ "errorMessage": {
60
+ "value": "\"Veuillez entrer un nombre d'habitant(s) valide\"",
61
+ "type": "VTL"
62
+ }
63
+ }
64
+ ],
65
+ "conditionFilter": {
66
+ "value": "true",
67
+ "type": "VTL"
68
+ },
69
+ "response": {
70
+ "name": "NB"
71
+ }
72
+ },
73
+ {
74
+ "id": "lfwg2ny2-list-habitants",
75
+ "componentType": "Loop",
76
+ "loopDependencies": ["NB"],
77
+ "iterations": {
78
+ "value": "NB",
79
+ "type": "VTL"
80
+ },
81
+ "page": "2",
82
+ "maxPage": "4",
83
+ "depth": 1,
84
+ "paginatedLoop": true,
85
+ "conditionFilter": {
86
+ "value": "NB >= 1",
87
+ "type": "VTL"
88
+ },
89
+ "components": [
90
+ {
91
+ "id": "lfwg2ny2-prenoms",
92
+ "label": {
93
+ "value": "\"Prénom \"",
94
+ "type": "VTL"
95
+ },
96
+ "conditionFilter": {
97
+ "value": "true",
98
+ "type": "VTL"
99
+ },
100
+ "controls": [
101
+ {
102
+ "id": "lfwg2ny2-prenoms-CI-0",
103
+ "typeOfControl": "CONSISTENCY",
104
+ "criticality": "ERROR",
105
+ "control": {
106
+ "value": "not(nvl(PRENOMS, \"\") = \"\")",
107
+ "type": "VTL"
108
+ },
109
+ "errorMessage": {
110
+ "value": "\"Veuillez entrer un prénom\"",
111
+ "type": "VTL"
112
+ }
113
+ },
114
+ {
115
+ "id": "lfwg2ny2-prenoms-CI-1",
116
+ "typeOfControl": "CONSISTENCY",
117
+ "criticality": "ERROR",
118
+ "control": {
119
+ "value": "not(match_characters(PRENOMS, \"^[-'a-zA-ZÀ-ÿœ$*\\s]+$\") = false)",
120
+ "type": "VTL"
121
+ },
122
+ "errorMessage": {
123
+ "value": "\"Votre prénom ne peut pas comporter de chiffres ou caractères spéciaux.\"",
124
+ "type": "VTL"
125
+ }
126
+ }
127
+ ],
128
+ "componentType": "Input",
129
+ "response": {
130
+ "name": "PRENOMS"
131
+ }
132
+ }
133
+ ]
134
+ }
135
+ ],
136
+ "variables": [
137
+ {
138
+ "variableType": "COLLECTED",
139
+ "name": "PRENOMS",
140
+ "values": {
141
+ "PREVIOUS": [null],
142
+ "COLLECTED": [null],
143
+ "FORCED": [null],
144
+ "EDITED": [null],
145
+ "INPUTED": [null]
146
+ }
147
+ },
148
+ {
149
+ "variableType": "COLLECTED",
150
+ "name": "NB",
151
+ "values": {
152
+ "PREVIOUS": null,
153
+ "COLLECTED": null,
154
+ "FORCED": null,
155
+ "EDITED": null,
156
+ "INPUTED": null
157
+ }
158
+ }
159
+ ],
160
+ "cleaning": {
161
+ "NB": {
162
+ "PRENOMS": "false"
163
+ }
164
+ },
165
+ "resizing": {
166
+ "NB": {
167
+ "size": "cast(NB, integer)",
168
+ "variables": ["PRENOMS"]
169
+ }
170
+ }
171
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "COLLECTED": {
3
- "PRENOMS": {
3
+ "PRENOM": {
4
4
  "EDITED": [null],
5
5
  "FORCED": [null],
6
6
  "INPUTED": [null],
@@ -43,6 +43,30 @@ function fetchFake() {
43
43
  return r.json();
44
44
  });
45
45
  }
46
+ function fetchPCS2020() {
47
+ return fetch('/libelles-pcs-2020.json').then(function (r) {
48
+ return r.json();
49
+ });
50
+ }
51
+ var infoPCS2020 = {
52
+ name: 'libelle-pcs2020',
53
+ fields: [{
54
+ name: 'id',
55
+ rules: ['[\\w]+'],
56
+ language: 'French',
57
+ min: 2
58
+ }],
59
+ queryParser: {
60
+ type: 'tokenized',
61
+ params: {
62
+ language: 'French',
63
+ pattern: '[\\w]+'
64
+ }
65
+ },
66
+ meloto: true,
67
+ version: '1',
68
+ stopWords: ['a', 'au', 'dans', 'de', 'des', 'du', 'en', 'er', 'la', 'le', 'ou', 'sur', 'd', 'l', 'aux', 'dans', 'un', 'une', 'pour', 'avec', 'chez', 'par', 'les']
69
+ };
46
70
  var infoFake = {
47
71
  name: 'fake',
48
72
  fields: [{
@@ -78,7 +102,7 @@ var infoNaf = {
78
102
  }
79
103
  },
80
104
  version: '1',
81
- meloto: false
105
+ meloto: true
82
106
  };
83
107
  function loadOne(_x, _x2) {
84
108
  return _loadOne.apply(this, arguments);
@@ -187,6 +211,17 @@ var Template = function Template(args) {
187
211
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
188
212
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
189
213
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("li", {
214
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
215
+ type: "button",
216
+ value: "load PCS2020",
217
+ onClick: function onClick() {
218
+ return loadOne(infoPCS2020, fetchPCS2020);
219
+ }
220
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Search, {
221
+ storeInfo: infoPCS2020,
222
+ defaultValue: "st"
223
+ })]
224
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("li", {
190
225
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
191
226
  type: "button",
192
227
  value: "load NAF",
@@ -42,19 +42,23 @@ function _getReferentiel() {
42
42
  while (1) switch (_context.prev = _context.next) {
43
43
  case 0:
44
44
  _context.t0 = name;
45
- _context.next = _context.t0 === 'naf-rev2-stop' ? 3 : _context.t0 === 'naf-rev2' ? 3 : _context.t0 === 'cog-communes' ? 4 : 5;
45
+ _context.next = _context.t0 === 'libelle-pcs2020' ? 3 : _context.t0 === 'naf-rev2' ? 4 : _context.t0 === 'cog-communes' ? 5 : 6;
46
46
  break;
47
47
  case 3:
48
- return _context.abrupt("return", fetch('https://inseefr.github.io/Lunatic/storybook/naf-rev2.json').then(function (r) {
48
+ return _context.abrupt("return", fetch('/libelles-pcs-2020.json').then(function (r) {
49
49
  return r.json();
50
50
  }));
51
51
  case 4:
52
- return _context.abrupt("return", fetch('https://inseefr.github.io/Lunatic/storybook/communes-2019.json').then(function (r) {
52
+ return _context.abrupt("return", fetch('https://inseefr.github.io/Lunatic/storybook/naf-rev2.json').then(function (r) {
53
53
  return r.json();
54
54
  }));
55
55
  case 5:
56
- throw new Error("Unkonw r\xE9f\xE9rentiel ".concat(name));
56
+ return _context.abrupt("return", fetch('https://inseefr.github.io/Lunatic/storybook/communes-2019.json').then(function (r) {
57
+ return r.json();
58
+ }));
57
59
  case 6:
60
+ throw new Error("Unkonw r\xE9f\xE9rentiel ".concat(name));
61
+ case 7:
58
62
  case "end":
59
63
  return _context.stop();
60
64
  }
@@ -107,7 +107,7 @@ function updateBindings(state, action) {
107
107
  ub(name, value);
108
108
  return state;
109
109
  }
110
- var reducers = (0, _compose["default"])(updateVariables, updateBindings, _reduceResizing["default"], _reduceMissing["default"], _reduceCleaning["default"]);
110
+ var reducers = (0, _compose["default"])(updateVariables, updateBindings, _reduceMissing["default"], _reduceCleaning["default"], _reduceResizing["default"]);
111
111
  function reduceHandleChange(state, action) {
112
112
  return reducers(state, action);
113
113
  }
@@ -18,9 +18,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
18
18
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
19
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
20
20
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
21
- function refillValue(size, precSize, value) {
22
- return (0, _commons2.resizeArrayVariable)(value, size, null);
23
- }
24
21
  function reduceResizingVariables(_ref) {
25
22
  var size = _ref.size,
26
23
  variableArray = _ref.variableArray,
@@ -30,12 +27,15 @@ function reduceResizingVariables(_ref) {
30
27
  if (size === undefined) {
31
28
  return {};
32
29
  }
33
- var sizeValue = executeExpression((0, _commons.getCompatibleVTLExpression)(size));
30
+ var newSize = executeExpression((0, _commons.getCompatibleVTLExpression)(size));
34
31
  return variableArray.reduce(function (acc, v) {
35
32
  if (v in variables) {
36
33
  var value = variables[v].value;
37
- var precSize = Array.isArray(value) ? value.length : 0;
38
- var newValue = refillValue(sizeValue, precSize, value);
34
+ var newValue = (0, _commons2.resizeArrayVariable)(value, newSize, null);
35
+ // Variable had the right size, do nothing
36
+ if (newValue === value) {
37
+ return acc;
38
+ }
39
39
  updateBindings(v, newValue);
40
40
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, v, _objectSpread(_objectSpread({}, variables[v]), {}, {
41
41
  value: newValue
@@ -66,6 +66,10 @@ function reduceResizingLinksVariables(_ref2) {
66
66
  var newValue = (0, _commons2.resizeArrayVariable)(value.map(function (i) {
67
67
  return (0, _commons2.resizeArrayVariable)(i, ySize, null);
68
68
  }), xSize, new Array(ySize).fill(null));
69
+ // Variable had the right size, do nothing
70
+ if (newValue === value) {
71
+ return acc;
72
+ }
69
73
  updateBindings(v, newValue);
70
74
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, v, _objectSpread(_objectSpread({}, variables[v]), {}, {
71
75
  value: newValue
@@ -8,8 +8,15 @@ var _source2 = _interopRequireDefault(require("../stories/questionnaires/logemen
8
8
  var _source3 = _interopRequireDefault(require("../stories/questionnaires/simpsons/source.json"));
9
9
  var _source4 = _interopRequireDefault(require("../stories/component-set/source.json"));
10
10
  var _source5 = _interopRequireDefault(require("../stories/behaviour/cleaning/source.json"));
11
+ var _sourceResizingCleaning = _interopRequireDefault(require("../stories/behaviour/resizing/source-resizing-cleaning.json"));
11
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
13
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
14
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
18
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
19
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
22
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -200,12 +207,38 @@ var dataFromObject = function dataFromObject(o) {
200
207
  (0, _vitest.expect)(spy.mock.calls[2][1]).toEqual('US');
201
208
  });
202
209
  });
210
+ (0, _vitest.describe)('resizing', function () {
211
+ var expectValueForResponse = function expectValueForResponse(spy, responseName, expectedValue) {
212
+ (0, _vitest.expect)(spy).toHaveBeenCalled();
213
+ var lastChangeCall = _toConsumableArray(spy.mock.calls).reverse().find(function (args) {
214
+ return args[0].name === responseName;
215
+ });
216
+ (0, _vitest.expect)(lastChangeCall[1], 'onChange should have been called with the right value').toEqual(expectedValue);
217
+ };
218
+ (0, _vitest.it)('should resize after cleaning', function () {
219
+ var spy = _vitest.vi.fn();
220
+ var _renderHook11 = (0, _reactHooks.renderHook)(function () {
221
+ return (0, _useLunatic["default"])(_sourceResizingCleaning["default"], undefined, {
222
+ onChange: spy
223
+ });
224
+ }),
225
+ result = _renderHook11.result;
226
+ result.current.onChange({
227
+ name: 'NB'
228
+ }, 3);
229
+ expectValueForResponse(spy, 'PRENOMS', [null, null, null]);
230
+ result.current.onChange({
231
+ name: 'NB'
232
+ }, 2);
233
+ expectValueForResponse(spy, 'PRENOMS', [null, null]);
234
+ });
235
+ });
203
236
  (0, _vitest.describe)('getComponents()', function () {
204
237
  (0, _vitest.describe)('componentSet', function () {
205
- var _renderHook11 = (0, _reactHooks.renderHook)(function () {
238
+ var _renderHook12 = (0, _reactHooks.renderHook)(function () {
206
239
  return (0, _useLunatic["default"])(_source4["default"], undefined, {});
207
240
  }),
208
- result = _renderHook11.result;
241
+ result = _renderHook12.result;
209
242
  var getComponents = function getComponents() {
210
243
  return result.current.getComponents();
211
244
  };
@@ -8,16 +8,17 @@ exports.value = value;
8
8
  var _prepareStringIndexation = _interopRequireDefault(require("../commons-tokenizer/prepare-string-indexation"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
10
  function value(entity) {
11
+ var _suggestion$label;
11
12
  var tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
12
13
  var suggestion = entity.suggestion;
13
- var label = suggestion.label;
14
- var prepared = (0, _prepareStringIndexation["default"])(label);
15
- if (label && label.length) {
14
+ var used = (_suggestion$label = suggestion.label) !== null && _suggestion$label !== void 0 ? _suggestion$label : suggestion.id;
15
+ var prepared = (0, _prepareStringIndexation["default"])(used);
16
+ if (used && used.length) {
16
17
  return tokens.reduce(function (score, token, i) {
17
18
  var index = prepared.search(token);
18
19
  if (index >= 0) {
19
- var how = label.length - index;
20
- how /= label.length;
20
+ var how = used.length - index;
21
+ how /= used.length;
21
22
  var weight = tokens.length - i;
22
23
  weight /= tokens.length;
23
24
  return score + how * weight;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inseefr/lunatic",
3
- "version": "2.6.3",
3
+ "version": "2.6.5",
4
4
  "workersVersion": "0.3.0-experimental",
5
5
  "description": "Library of questionnaire components",
6
6
  "repository": {