2 lines
2.9 MiB
2 lines
2.9 MiB
[{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/assets/config/manifest.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/assets/javascripts/secretField.js","messages":[],"suppressedMessages":[{"ruleId":"no-unused-vars","severity":2,"message":"'toggleSecretField' is defined but never used.","line":2,"column":10,"nodeType":"Identifier","messageId":"unusedVar","endLine":2,"endColumn":27,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'copySecretField' is defined but never used.","line":27,"column":10,"nodeType":"Identifier","messageId":"unusedVar","endLine":27,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/App.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/ApiClient.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class getter 'accountIdFromRoute'.","line":17,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":17,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/CacheEnabledApiClient.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class getter 'cacheModelName'.","line":12,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":12,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'extractDataFromResponse'.","line":29,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":29,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'marshallData'.","line":34,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":34,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/account.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/accountActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/agentBots.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/agentCapacityPolicies.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/agents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/assignableAgents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/assignmentPolicies.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/attributes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/auditLogs.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/auth.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/automation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/bulkActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/campaigns.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/cannedResponse.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/asset.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/assistant.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/bulkActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/copilotMessages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/copilotThreads.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/customTools.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/document.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/inboxAutomations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/inboxes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/reminderSettings.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/reminders.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/reservations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/response.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/scenarios.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/tools.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/captain/units.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/changelog.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'fetchFromHub'.","line":11,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":11,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/fbChannel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/googleClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/instagramClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/microsoftClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/tiktokClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/twilioChannel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/twitterClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/voice/twilioVoiceClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/voice/voiceAPIClient.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'initiateCall'.","line":11,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":11,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/webChannel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channel/whatsappChannel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/channels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/companies.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/contactNotes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/contacts.js","messages":[],"suppressedMessages":[{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":76,"column":10,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":76,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":76,"column":20,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":76,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/conversations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/csatReports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/customRole.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/customViews.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/dashboardApps.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/endPoints.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/enterprise/account.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/enterprise/specs/account.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/frequentQuestions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/helpCenter/articles.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/helpCenter/categories.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/helpCenter/portals.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/inbox/conversation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/inbox/jasmine.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/inbox/message.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/inboxHealth.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/inboxMembers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/inboxes.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class getter 'cacheModelName'.","line":10,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":10,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/integrations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/integrations/dyte.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/integrations/linear.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/integrations/openapi.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/integrations/shopify.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/labels.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class getter 'cacheModelName'.","line":9,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":9,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/liveReports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/macros.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/mfa.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/notificationSubscription.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/notifications.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/notion_auth.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/reports.js","messages":[],"suppressedMessages":[{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":35,"column":28,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":35,"endColumn":44,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/samlSettings.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/search.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/sla.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/slaReports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/account.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/accountActions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/agentBots.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/agentCapacityPolicies.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/agents.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/article.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/assignableAgents.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/assignmentPolicies.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/automation.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/bulkAction.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/campaign.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/channel/fbChannel.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/channel/twilioChannel.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/channel/twitterClient.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/channel/webChannel.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/companies.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/contacts.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/conversations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/csatReports.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/dashboardApps.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/endPoints.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/helpCenter/categories.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/inbox/conversation.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/inbox/message.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/inboxes.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/integrations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/integrations/dyte.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/integrations/linear.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/labels.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/macros.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/notifications.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/portals.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/reports.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/slaReports.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/teams.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/tiktokClient.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/userNotificationSettings.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/specs/webhook.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/summaryReports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/teams.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class getter 'cacheModelName'.","line":11,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":11,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'extractDataFromResponse'.","line":16,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":16,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'marshallData'.","line":21,"column":3,"nodeType":"FunctionExpression","messageId":"missingThis","endLine":21,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/userNotificationSettings.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/webhooks.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/api/yearInReview.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Accordion/Accordion.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/AgentCapacityPolicyCard/AgentCapacityPolicyCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/AgentCapacityPolicyCard/AgentCapacityPolicyCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/AssignmentCard/AssignmentCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/AssignmentCard/AssignmentCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/AssignmentPolicyCard/AssignmentPolicyCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/AssignmentPolicyCard/AssignmentPolicyCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/BaseInfo.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/CardPopover.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/DataTable.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/ExclusionRules.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/FairDistribution.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/InboxCapacityLimits.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.LABEL`' dynamic key is used'","line":80,"column":12,"nodeType":"CallExpression","endLine":80,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.ADD_BUTTON`' dynamic key is used'","line":84,"column":17,"nodeType":"CallExpression","endLine":84,"endColumn":70},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SELECT_INBOX`' dynamic key is used'","line":86,"column":11,"nodeType":"CallExpression","endLine":86,"endColumn":72},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.EMPTY_STATE`' dynamic key is used'","line":105,"column":12,"nodeType":"CallExpression","endLine":105,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.MAX_CONVERSATIONS`' dynamic key is used'","line":134,"column":17,"nodeType":"CallExpression","endLine":136,"endColumn":18},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.MAX_CONVERSATIONS`' dynamic key is used'","line":140,"column":17,"nodeType":"CallExpression","endLine":142,"endColumn":18},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SET_LIMIT`' dynamic key is used'","line":160,"column":17,"nodeType":"CallExpression","endLine":160,"endColumn":75}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\nimport AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';\n\nconst props = defineProps({\n inboxList: {\n type: Array,\n default: () => [],\n },\n isFetching: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits(['delete', 'add', 'update']);\n\nconst inboxCapacityLimits = defineModel('inboxCapacityLimits', {\n type: Array,\n default: () => [],\n});\n\nconst { t } = useI18n();\n\nconst BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY';\nconst DEFAULT_CONVERSATION_LIMIT = 10;\nconst MIN_CONVERSATION_LIMIT = 1;\nconst MAX_CONVERSATION_LIMIT = 100000;\n\nconst selectedInboxIds = computed(\n () => new Set(inboxCapacityLimits.value.map(limit => limit.inboxId))\n);\n\nconst availableInboxes = computed(() =>\n props.inboxList.filter(\n inbox => inbox && !selectedInboxIds.value.has(inbox.id)\n )\n);\n\nconst isLimitValid = limit => {\n return (\n limit.conversationLimit >= MIN_CONVERSATION_LIMIT &&\n limit.conversationLimit <= MAX_CONVERSATION_LIMIT\n );\n};\n\nconst inboxMap = computed(\n () => new Map(props.inboxList.map(inbox => [inbox.id, inbox]))\n);\n\nconst handleAddInbox = inbox => {\n emit('add', {\n inboxId: inbox.id,\n conversationLimit: DEFAULT_CONVERSATION_LIMIT,\n });\n};\n\nconst handleRemoveLimit = limitId => {\n emit('delete', limitId);\n};\n\nconst handleLimitChange = limit => {\n if (isLimitValid(limit)) {\n emit('update', limit);\n }\n};\n\nconst getInboxName = inboxId => {\n return inboxMap.value.get(inboxId)?.name || '';\n};\n</script>\n\n<template>\n <div class=\"py-4 flex-col flex gap-3\">\n <div class=\"flex items-center w-full gap-8 justify-between pt-1 pb-3\">\n <label class=\"text-sm font-medium text-n-slate-12\">\n {{ t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.LABEL`) }}\n </label>\n\n <AddDataDropdown\n :label=\"t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.ADD_BUTTON`)\"\n :search-placeholder=\"\n t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SELECT_INBOX`)\n \"\n :items=\"availableInboxes\"\n @add=\"handleAddInbox\"\n />\n </div>\n\n <div\n v-if=\"isFetching\"\n class=\"flex items-center justify-center py-3 w-full text-n-slate-11\"\n >\n <Spinner />\n </div>\n\n <div\n v-else-if=\"!inboxCapacityLimits.length\"\n class=\"custom-dashed-border flex items-center justify-center py-6 w-full\"\n >\n <span class=\"text-sm text-n-slate-11\">\n {{ t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.EMPTY_STATE`) }}\n </span>\n </div>\n\n <div v-else class=\"flex-col flex gap-3\">\n <div\n v-for=\"(limit, index) in inboxCapacityLimits\"\n :key=\"limit.id || `temp-${index}`\"\n class=\"flex flex-col xs:flex-row items-stretch gap-3\"\n >\n <div\n class=\"flex items-center rounded-lg outline-1 outline cursor-not-allowed text-n-slate-11 outline-n-weak py-2.5 px-3 text-sm w-full min-w-0\"\n :title=\"getInboxName(limit.inboxId)\"\n >\n <span class=\"truncate min-w-0\">\n {{ getInboxName(limit.inboxId) }}\n </span>\n </div>\n\n <div class=\"flex items-center gap-3 w-full xs:w-auto\">\n <div\n class=\"py-2.5 px-3 rounded-lg gap-2 outline outline-1 flex-1 xs:flex-shrink-0 flex items-center min-w-0\"\n :class=\"[\n !isLimitValid(limit) ? 'outline-n-ruby-8' : 'outline-n-weak',\n ]\"\n >\n <label\n class=\"text-sm text-n-slate-12 ltr:pr-2 rtl:pl-2 truncate min-w-0 flex-shrink\"\n :title=\"\n t(\n `${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.MAX_CONVERSATIONS`\n )\n \"\n >\n {{\n t(\n `${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.MAX_CONVERSATIONS`\n )\n }}\n </label>\n\n <div class=\"h-5 w-px bg-n-weak\" />\n\n <input\n v-model.number=\"limit.conversationLimit\"\n type=\"number\"\n :min=\"MIN_CONVERSATION_LIMIT\"\n :max=\"MAX_CONVERSATION_LIMIT\"\n class=\"reset-base bg-transparent focus:outline-none min-w-16 w-24 text-sm flex-shrink-0\"\n :class=\"[\n !isLimitValid(limit)\n ? 'placeholder:text-n-ruby-9 !text-n-ruby-9'\n : 'placeholder:text-n-slate-10 text-n-slate-12',\n ]\"\n :placeholder=\"\n t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SET_LIMIT`)\n \"\n @blur=\"handleLimitChange(limit)\"\n />\n </div>\n\n <Button\n type=\"button\"\n slate\n icon=\"i-lucide-trash\"\n class=\"flex-shrink-0\"\n @click=\"handleRemoveLimit(limit.id)\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/RadioCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/AddDataDropdown.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/BaseInfo.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/CardPopover.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/DataTable.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/ExclusionRules.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/FairDistribution.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/InboxCapacityLimits.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Current Limits:' is used","line":100,"column":48,"nodeType":null,"endLine":100,"endColumn":63,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2498],"text":"<i18n>\n{\n \"en\": {\n \"Current Limits:\": \"Current Limits:\"\n }\n}\n</i18n>\n\n<script setup>\nimport InboxCapacityLimits from '../InboxCapacityLimits.vue';\nimport { ref } from 'vue';\n\nconst mockInboxList = [\n {\n value: 1,\n label: 'Website Support',\n icon: 'i-lucide-globe',\n },\n {\n value: 2,\n label: 'Email Support',\n icon: 'i-lucide-mail',\n },\n {\n value: 3,\n label: 'WhatsApp Business',\n icon: 'i-lucide-message-circle',\n },\n {\n value: 4,\n label: 'Facebook Messenger',\n icon: 'i-lucide-facebook',\n },\n {\n value: 5,\n label: 'Twitter DM',\n icon: 'i-lucide-twitter',\n },\n {\n value: 6,\n label: 'Telegram',\n icon: 'i-lucide-send',\n },\n];\n\nconst inboxCapacityLimitsEmpty = ref([]);\nconst inboxCapacityLimitsNew = ref([\n { id: 1, inboxId: 1, conversationLimit: 5 },\n { inboxId: null, conversationLimit: null },\n]);\n\nconst handleDelete = id => {\n console.log('Delete capacity limit:', id);\n};\n</script>\n\n<template>\n <Story\n title=\"Components/AgentManagementPolicy/InboxCapacityLimits\"\n :layout=\"{ type: 'grid', width: '900px' }\"\n >\n <Variant title=\"Empty State\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsEmpty\"\n :inbox-list=\"mockInboxList\"\n :is-fetching=\"false\"\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n </div>\n </Variant>\n\n <Variant title=\"Loading State\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsEmpty\"\n :inbox-list=\"mockInboxList\"\n is-fetching\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n </div>\n </Variant>\n\n <Variant title=\"With New Row and existing data\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsNew\"\n :inbox-list=\"mockInboxList\"\n :is-fetching=\"false\"\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n </div>\n </Variant>\n\n <Variant title=\"Interactive Demo\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsEmpty\"\n :inbox-list=\"mockInboxList\"\n :is-fetching=\"false\"\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n <div class=\"mt-4 p-4 bg-n-alpha-2 rounded-lg\">\n <h4 class=\"text-sm font-medium mb-2\">{{$t('Current Limits:')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport InboxCapacityLimits from '../InboxCapacityLimits.vue';\nimport { ref } from 'vue';\n\nconst mockInboxList = [\n {\n value: 1,\n label: 'Website Support',\n icon: 'i-lucide-globe',\n },\n {\n value: 2,\n label: 'Email Support',\n icon: 'i-lucide-mail',\n },\n {\n value: 3,\n label: 'WhatsApp Business',\n icon: 'i-lucide-message-circle',\n },\n {\n value: 4,\n label: 'Facebook Messenger',\n icon: 'i-lucide-facebook',\n },\n {\n value: 5,\n label: 'Twitter DM',\n icon: 'i-lucide-twitter',\n },\n {\n value: 6,\n label: 'Telegram',\n icon: 'i-lucide-send',\n },\n];\n\nconst inboxCapacityLimitsEmpty = ref([]);\nconst inboxCapacityLimitsNew = ref([\n { id: 1, inboxId: 1, conversationLimit: 5 },\n { inboxId: null, conversationLimit: null },\n]);\n\nconst handleDelete = id => {\n console.log('Delete capacity limit:', id);\n};\n</script>\n\n<template>\n <Story\n title=\"Components/AgentManagementPolicy/InboxCapacityLimits\"\n :layout=\"{ type: 'grid', width: '900px' }\"\n >\n <Variant title=\"Empty State\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsEmpty\"\n :inbox-list=\"mockInboxList\"\n :is-fetching=\"false\"\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n </div>\n </Variant>\n\n <Variant title=\"Loading State\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsEmpty\"\n :inbox-list=\"mockInboxList\"\n is-fetching\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n </div>\n </Variant>\n\n <Variant title=\"With New Row and existing data\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsNew\"\n :inbox-list=\"mockInboxList\"\n :is-fetching=\"false\"\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n </div>\n </Variant>\n\n <Variant title=\"Interactive Demo\">\n <div class=\"p-8 bg-n-background\">\n <InboxCapacityLimits\n v-model:inbox-capacity-limits=\"inboxCapacityLimitsEmpty\"\n :inbox-list=\"mockInboxList\"\n :is-fetching=\"false\"\n :is-updating=\"false\"\n @delete=\"handleDelete\"\n />\n <div class=\"mt-4 p-4 bg-n-alpha-2 rounded-lg\">\n <h4 class=\"text-sm font-medium mb-2\">Current Limits:</h4>\n <pre class=\"text-xs\">{{\n JSON.stringify(inboxCapacityLimitsEmpty, null, 2)\n }}</pre>\n </div>\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/AssignmentPolicy/components/story/RadioCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/CampaignCard/LiveChatCampaignDetails.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/CampaignCard/SMSCampaignDetails.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/CampaignLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/EmptyState/CampaignEmptyStateContent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/EmptyState/LiveChatCampaignEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/EmptyState/SMSCampaignEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/EmptyState/WhatsAppCampaignEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/CampaignList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/ConfirmDeleteCampaignDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/EditLiveChatCampaignDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/LiveChatCampaignDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/LiveChatCampaignForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${baseKey}.${errorKey}.ERROR`' dynamic key is used'","line":101,"column":35,"nodeType":"CallExpression","endLine":101,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAMPAIGN.LIVE_CHAT.CREATE.FORM.BUTTONS.${mode.toUpperCase()}`' dynamic key is used'","line":315,"column":11,"nodeType":"CallExpression","endLine":315,"endColumn":76}],"suppressedMessages":[{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":60,"column":7,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":60,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { useMapGetter, useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { URLPattern } from 'urlpattern-polyfill';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport Editor from 'dashboard/components-next/Editor/Editor.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n required: true,\n validator: value => ['edit', 'create'].includes(value),\n },\n selectedCampaign: {\n type: Object,\n default: () => ({}),\n },\n showActionButtons: {\n type: Boolean,\n default: true,\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst { t } = useI18n();\nconst store = useStore();\n\nconst formState = {\n uiFlags: useMapGetter('campaigns/getUIFlags'),\n inboxes: useMapGetter('inboxes/getWebsiteInboxes'),\n};\n\nconst senderList = ref([]);\n\nconst initialState = {\n title: '',\n message: '',\n inboxId: null,\n senderId: 0,\n enabled: true,\n triggerOnlyDuringBusinessHours: false,\n endPoint: '',\n timeOnPage: 10,\n};\n\nconst state = reactive({ ...initialState });\n\nconst urlValidators = {\n shouldBeAValidURLPattern: value => {\n try {\n // eslint-disable-next-line\n new URLPattern(value);\n return true;\n } catch {\n return false;\n }\n },\n shouldStartWithHTTP: value =>\n value ? value.startsWith('https://') || value.startsWith('http://') : false,\n};\n\nconst validationRules = {\n title: { required, minLength: minLength(1) },\n message: { required, minLength: minLength(1) },\n inboxId: { required },\n senderId: { required },\n endPoint: { required, ...urlValidators },\n timeOnPage: { required },\n};\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isCreating = computed(() => formState.uiFlags.value.isCreating);\nconst isSubmitDisabled = computed(() => v$.value.$invalid);\n\nconst mapToOptions = (items, valueKey, labelKey) =>\n items?.map(item => ({\n value: item[valueKey],\n label: item[labelKey],\n })) ?? [];\n\nconst inboxOptions = computed(() =>\n mapToOptions(formState.inboxes.value, 'id', 'name')\n);\n\nconst sendersAndBotList = computed(() => [\n { value: 0, label: 'Bot' },\n ...mapToOptions(senderList.value, 'id', 'name'),\n]);\n\nconst getErrorMessage = (field, errorKey) => {\n const baseKey = 'CAMPAIGN.LIVE_CHAT.CREATE.FORM';\n return v$.value[field].$error ? t(`${baseKey}.${errorKey}.ERROR`) : '';\n};\n\nconst formErrors = computed(() => ({\n title: getErrorMessage('title', 'TITLE'),\n message: getErrorMessage('message', 'MESSAGE'),\n inbox: getErrorMessage('inboxId', 'INBOX'),\n endPoint: getErrorMessage('endPoint', 'END_POINT'),\n timeOnPage: getErrorMessage('timeOnPage', 'TIME_ON_PAGE'),\n sender: getErrorMessage('senderId', 'SENT_BY'),\n}));\n\nconst resetState = () => Object.assign(state, initialState);\n\nconst handleCancel = () => emit('cancel');\n\nconst handleInboxChange = async inboxId => {\n if (!inboxId) {\n senderList.value = [];\n return;\n }\n\n try {\n const response = await store.dispatch('inboxMembers/get', { inboxId });\n senderList.value = response?.data?.payload ?? [];\n } catch (error) {\n senderList.value = [];\n useAlert(\n error?.response?.message ??\n t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.API.ERROR_MESSAGE')\n );\n }\n};\n\nconst prepareCampaignDetails = () => ({\n title: state.title,\n message: state.message,\n inbox_id: state.inboxId,\n sender_id: state.senderId || null,\n enabled: state.enabled,\n trigger_only_during_business_hours: state.triggerOnlyDuringBusinessHours,\n trigger_rules: {\n url: state.endPoint,\n time_on_page: state.timeOnPage,\n },\n});\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) return;\n\n emit('submit', prepareCampaignDetails());\n if (props.mode === 'create') {\n resetState();\n handleCancel();\n }\n};\n\nconst updateStateFromCampaign = campaign => {\n if (!campaign) return;\n\n const {\n title,\n message,\n inbox: { id: inboxId },\n sender,\n enabled,\n trigger_only_during_business_hours: triggerOnlyDuringBusinessHours,\n trigger_rules: { url: endPoint, time_on_page: timeOnPage },\n } = campaign;\n\n Object.assign(state, {\n title,\n message,\n inboxId,\n senderId: sender?.id ?? 0,\n enabled,\n triggerOnlyDuringBusinessHours,\n endPoint,\n timeOnPage,\n });\n};\n\nwatch(\n () => state.inboxId,\n newInboxId => {\n if (newInboxId) {\n handleInboxChange(newInboxId);\n }\n },\n { immediate: true }\n);\n\nwatch(\n () => props.selectedCampaign,\n newCampaign => {\n if (props.mode === 'edit' && newCampaign) {\n updateStateFromCampaign(newCampaign);\n }\n },\n { immediate: true }\n);\n\ndefineExpose({ prepareCampaignDetails, isSubmitDisabled });\n</script>\n\n<template>\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <Input\n v-model=\"state.title\"\n :label=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.TITLE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.TITLE.PLACEHOLDER')\"\n :message=\"formErrors.title\"\n :message-type=\"formErrors.title ? 'error' : 'info'\"\n />\n\n <Editor\n v-model=\"state.message\"\n :label=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.MESSAGE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.MESSAGE.PLACEHOLDER')\"\n :message=\"formErrors.message\"\n :message-type=\"formErrors.message ? 'error' : 'info'\"\n />\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"inbox\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.INBOX.LABEL') }}\n </label>\n <ComboBox\n id=\"inbox\"\n v-model=\"state.inboxId\"\n :options=\"inboxOptions\"\n :has-error=\"!!formErrors.inbox\"\n :placeholder=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.INBOX.PLACEHOLDER')\"\n :message=\"formErrors.inbox\"\n class=\"[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:dark:outline-n-weak [&>div>button:not(.focused)]:hover:!outline-n-slate-6\"\n />\n </div>\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"sentBy\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.SENT_BY.LABEL') }}\n </label>\n <ComboBox\n id=\"sentBy\"\n v-model=\"state.senderId\"\n :options=\"sendersAndBotList\"\n :has-error=\"!!formErrors.sender\"\n :disabled=\"!state.inboxId\"\n :placeholder=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.SENT_BY.PLACEHOLDER')\"\n class=\"[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:dark:outline-n-weak [&>div>button:not(.focused)]:hover:!outline-n-slate-6\"\n :message=\"formErrors.sender\"\n />\n </div>\n\n <Input\n v-model=\"state.endPoint\"\n type=\"url\"\n :label=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.END_POINT.LABEL')\"\n :placeholder=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.END_POINT.PLACEHOLDER')\"\n :message=\"formErrors.endPoint\"\n :message-type=\"formErrors.endPoint ? 'error' : 'info'\"\n />\n\n <Input\n v-model=\"state.timeOnPage\"\n type=\"number\"\n :label=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.TIME_ON_PAGE.LABEL')\"\n :placeholder=\"\n t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.TIME_ON_PAGE.PLACEHOLDER')\n \"\n :message=\"formErrors.timeOnPage\"\n :message-type=\"formErrors.timeOnPage ? 'error' : 'info'\"\n />\n\n <fieldset class=\"flex flex-col gap-2.5\">\n <legend class=\"mb-2.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.OTHER_PREFERENCES.TITLE') }}\n </legend>\n\n <label class=\"flex items-center gap-2\">\n <input v-model=\"state.enabled\" type=\"checkbox\" />\n <span class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.OTHER_PREFERENCES.ENABLED') }}\n </span>\n </label>\n\n <label class=\"flex items-center gap-2\">\n <input v-model=\"state.triggerOnlyDuringBusinessHours\" type=\"checkbox\" />\n <span class=\"text-sm font-medium text-n-slate-12\">\n {{\n t(\n 'CAMPAIGN.LIVE_CHAT.CREATE.FORM.OTHER_PREFERENCES.TRIGGER_ONLY_BUSINESS_HOURS'\n )\n }}\n </span>\n </label>\n </fieldset>\n\n <div\n v-if=\"showActionButtons\"\n class=\"flex items-center justify-between w-full gap-3\"\n >\n <Button\n type=\"button\"\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('CAMPAIGN.LIVE_CHAT.CREATE.FORM.BUTTONS.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n type=\"submit\"\n :label=\"\n t(`CAMPAIGN.LIVE_CHAT.CREATE.FORM.BUTTONS.${mode.toUpperCase()}`)\n \"\n class=\"w-full\"\n :is-loading=\"isCreating\"\n :disabled=\"isCreating || isSubmitDisabled\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/SMSCampaign/SMSCampaignDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/SMSCampaign/SMSCampaignForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${baseKey}.${errorKey}.ERROR`' dynamic key is used'","line":69,"column":35,"nodeType":"CallExpression","endLine":69,"endColumn":68}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport TextArea from 'dashboard/components-next/textarea/TextArea.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport TagMultiSelectComboBox from 'dashboard/components-next/combobox/TagMultiSelectComboBox.vue';\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('campaigns/getUIFlags'),\n labels: useMapGetter('labels/getLabels'),\n inboxes: useMapGetter('inboxes/getSMSInboxes'),\n};\n\nconst initialState = {\n title: '',\n message: '',\n inboxId: null,\n scheduledAt: null,\n selectedAudience: [],\n};\n\nconst state = reactive({ ...initialState });\n\nconst rules = {\n title: { required, minLength: minLength(1) },\n message: { required, minLength: minLength(1) },\n inboxId: { required },\n scheduledAt: { required },\n selectedAudience: { required },\n};\n\nconst v$ = useVuelidate(rules, state);\n\nconst isCreating = computed(() => formState.uiFlags.value.isCreating);\n\nconst currentDateTime = computed(() => {\n // Added to disable the scheduled at field from being set to the current time\n const now = new Date();\n const localTime = new Date(now.getTime() - now.getTimezoneOffset() * 60000);\n return localTime.toISOString().slice(0, 16);\n});\n\nconst mapToOptions = (items, valueKey, labelKey) =>\n items?.map(item => ({\n value: item[valueKey],\n label: item[labelKey],\n })) ?? [];\n\nconst audienceList = computed(() =>\n mapToOptions(formState.labels.value, 'id', 'title')\n);\n\nconst inboxOptions = computed(() =>\n mapToOptions(formState.inboxes.value, 'id', 'name')\n);\n\nconst getErrorMessage = (field, errorKey) => {\n const baseKey = 'CAMPAIGN.SMS.CREATE.FORM';\n return v$.value[field].$error ? t(`${baseKey}.${errorKey}.ERROR`) : '';\n};\n\nconst formErrors = computed(() => ({\n title: getErrorMessage('title', 'TITLE'),\n message: getErrorMessage('message', 'MESSAGE'),\n inbox: getErrorMessage('inboxId', 'INBOX'),\n scheduledAt: getErrorMessage('scheduledAt', 'SCHEDULED_AT'),\n audience: getErrorMessage('selectedAudience', 'AUDIENCE'),\n}));\n\nconst isSubmitDisabled = computed(() => v$.value.$invalid);\n\nconst formatToUTCString = localDateTime =>\n localDateTime ? new Date(localDateTime).toISOString() : null;\n\nconst resetState = () => {\n Object.assign(state, initialState);\n};\n\nconst handleCancel = () => emit('cancel');\n\nconst prepareCampaignDetails = () => ({\n title: state.title,\n message: state.message,\n inbox_id: state.inboxId,\n scheduled_at: formatToUTCString(state.scheduledAt),\n audience: state.selectedAudience?.map(id => ({\n id,\n type: 'Label',\n })),\n});\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) return;\n\n emit('submit', prepareCampaignDetails());\n resetState();\n handleCancel();\n};\n</script>\n\n<template>\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <Input\n v-model=\"state.title\"\n :label=\"t('CAMPAIGN.SMS.CREATE.FORM.TITLE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.SMS.CREATE.FORM.TITLE.PLACEHOLDER')\"\n :message=\"formErrors.title\"\n :message-type=\"formErrors.title ? 'error' : 'info'\"\n />\n\n <TextArea\n v-model=\"state.message\"\n :label=\"t('CAMPAIGN.SMS.CREATE.FORM.MESSAGE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.SMS.CREATE.FORM.MESSAGE.PLACEHOLDER')\"\n show-character-count\n :message=\"formErrors.message\"\n :message-type=\"formErrors.message ? 'error' : 'info'\"\n />\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"inbox\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.SMS.CREATE.FORM.INBOX.LABEL') }}\n </label>\n <ComboBox\n id=\"inbox\"\n v-model=\"state.inboxId\"\n :options=\"inboxOptions\"\n :has-error=\"!!formErrors.inbox\"\n :placeholder=\"t('CAMPAIGN.SMS.CREATE.FORM.INBOX.PLACEHOLDER')\"\n :message=\"formErrors.inbox\"\n class=\"[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:dark:outline-n-weak [&>div>button:not(.focused)]:hover:!outline-n-slate-6\"\n />\n </div>\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"audience\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.SMS.CREATE.FORM.AUDIENCE.LABEL') }}\n </label>\n <TagMultiSelectComboBox\n v-model=\"state.selectedAudience\"\n :options=\"audienceList\"\n :label=\"t('CAMPAIGN.SMS.CREATE.FORM.AUDIENCE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.SMS.CREATE.FORM.AUDIENCE.PLACEHOLDER')\"\n :has-error=\"!!formErrors.audience\"\n :message=\"formErrors.audience\"\n class=\"[&>div>button]:bg-n-alpha-black2\"\n />\n </div>\n\n <Input\n v-model=\"state.scheduledAt\"\n :label=\"t('CAMPAIGN.SMS.CREATE.FORM.SCHEDULED_AT.LABEL')\"\n type=\"datetime-local\"\n :min=\"currentDateTime\"\n :placeholder=\"t('CAMPAIGN.SMS.CREATE.FORM.SCHEDULED_AT.PLACEHOLDER')\"\n :message=\"formErrors.scheduledAt\"\n :message-type=\"formErrors.scheduledAt ? 'error' : 'info'\"\n />\n\n <div class=\"flex items-center justify-between w-full gap-3\">\n <Button\n variant=\"faded\"\n color=\"slate\"\n type=\"button\"\n :label=\"t('CAMPAIGN.SMS.CREATE.FORM.BUTTONS.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n :label=\"t('CAMPAIGN.SMS.CREATE.FORM.BUTTONS.CREATE')\"\n class=\"w-full\"\n type=\"submit\"\n :is-loading=\"isCreating\"\n :disabled=\"isCreating || isSubmitDisabled\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/WhatsAppCampaign/WhatsAppCampaignDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/WhatsAppCampaign/WhatsAppCampaignForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${baseKey}.${errorKey}.ERROR`' dynamic key is used'","line":96,"column":35,"nodeType":"CallExpression","endLine":96,"endColumn":68}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, watch, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport TagMultiSelectComboBox from 'dashboard/components-next/combobox/TagMultiSelectComboBox.vue';\nimport WhatsAppTemplateParser from 'dashboard/components-next/whatsapp/WhatsAppTemplateParser.vue';\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('campaigns/getUIFlags'),\n labels: useMapGetter('labels/getLabels'),\n inboxes: useMapGetter('inboxes/getWhatsAppInboxes'),\n getFilteredWhatsAppTemplates: useMapGetter(\n 'inboxes/getFilteredWhatsAppTemplates'\n ),\n};\n\nconst initialState = {\n title: '',\n inboxId: null,\n templateId: null,\n scheduledAt: null,\n selectedAudience: [],\n};\n\nconst state = reactive({ ...initialState });\nconst templateParserRef = ref(null);\n\nconst rules = {\n title: { required, minLength: minLength(1) },\n inboxId: { required },\n templateId: { required },\n scheduledAt: { required },\n selectedAudience: { required },\n};\n\nconst v$ = useVuelidate(rules, state);\n\nconst isCreating = computed(() => formState.uiFlags.value.isCreating);\n\nconst currentDateTime = computed(() => {\n // Added to disable the scheduled at field from being set to the current time\n const now = new Date();\n const localTime = new Date(now.getTime() - now.getTimezoneOffset() * 60000);\n return localTime.toISOString().slice(0, 16);\n});\n\nconst mapToOptions = (items, valueKey, labelKey) =>\n items?.map(item => ({\n value: item[valueKey],\n label: item[labelKey],\n })) ?? [];\n\nconst audienceList = computed(() =>\n mapToOptions(formState.labels.value, 'id', 'title')\n);\n\nconst inboxOptions = computed(() =>\n mapToOptions(formState.inboxes.value, 'id', 'name')\n);\n\nconst templateOptions = computed(() => {\n if (!state.inboxId) return [];\n const templates = formState.getFilteredWhatsAppTemplates.value(state.inboxId);\n return templates.map(template => {\n // Create a more user-friendly label from template name\n const friendlyName = template.name\n .replace(/_/g, ' ')\n .replace(/\\b\\w/g, l => l.toUpperCase());\n\n return {\n value: template.id,\n label: `${friendlyName} (${template.language || 'en'})`,\n template: template,\n };\n });\n});\n\nconst selectedTemplate = computed(() => {\n if (!state.templateId) return null;\n return templateOptions.value.find(option => option.value === state.templateId)\n ?.template;\n});\n\nconst getErrorMessage = (field, errorKey) => {\n const baseKey = 'CAMPAIGN.WHATSAPP.CREATE.FORM';\n return v$.value[field].$error ? t(`${baseKey}.${errorKey}.ERROR`) : '';\n};\n\nconst formErrors = computed(() => ({\n title: getErrorMessage('title', 'TITLE'),\n inbox: getErrorMessage('inboxId', 'INBOX'),\n template: getErrorMessage('templateId', 'TEMPLATE'),\n scheduledAt: getErrorMessage('scheduledAt', 'SCHEDULED_AT'),\n audience: getErrorMessage('selectedAudience', 'AUDIENCE'),\n}));\n\nconst hasRequiredTemplateParams = computed(() => {\n return templateParserRef.value?.v$?.$invalid === false || true;\n});\n\nconst isSubmitDisabled = computed(\n () => v$.value.$invalid || !hasRequiredTemplateParams.value\n);\n\nconst formatToUTCString = localDateTime =>\n localDateTime ? new Date(localDateTime).toISOString() : null;\n\nconst resetState = () => {\n Object.assign(state, initialState);\n v$.value.$reset();\n};\n\nconst handleCancel = () => emit('cancel');\n\nconst prepareCampaignDetails = () => {\n // Find the selected template to get its content\n const currentTemplate = selectedTemplate.value;\n const parserData = templateParserRef.value;\n\n // Extract template content - this should be the template message body\n const templateContent = parserData?.renderedTemplate || '';\n\n // Prepare template_params object with the same structure as used in contacts\n const templateParams = {\n name: currentTemplate?.name || '',\n namespace: currentTemplate?.namespace || '',\n category: currentTemplate?.category || 'UTILITY',\n language: currentTemplate?.language || 'en_US',\n processed_params: parserData?.processedParams || {},\n };\n\n return {\n title: state.title,\n message: templateContent,\n template_params: templateParams,\n inbox_id: state.inboxId,\n scheduled_at: formatToUTCString(state.scheduledAt),\n audience: state.selectedAudience?.map(id => ({\n id,\n type: 'Label',\n })),\n };\n};\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) return;\n\n emit('submit', prepareCampaignDetails());\n resetState();\n handleCancel();\n};\n\n// Reset template selection when inbox changes\nwatch(\n () => state.inboxId,\n () => {\n state.templateId = null;\n }\n);\n</script>\n\n<template>\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <Input\n v-model=\"state.title\"\n :label=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.TITLE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.TITLE.PLACEHOLDER')\"\n :message=\"formErrors.title\"\n :message-type=\"formErrors.title ? 'error' : 'info'\"\n />\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"inbox\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.WHATSAPP.CREATE.FORM.INBOX.LABEL') }}\n </label>\n <ComboBox\n id=\"inbox\"\n v-model=\"state.inboxId\"\n :options=\"inboxOptions\"\n :has-error=\"!!formErrors.inbox\"\n :placeholder=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.INBOX.PLACEHOLDER')\"\n :message=\"formErrors.inbox\"\n class=\"[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:dark:outline-n-weak [&>div>button:not(.focused)]:hover:!outline-n-slate-6\"\n />\n </div>\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"template\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.WHATSAPP.CREATE.FORM.TEMPLATE.LABEL') }}\n </label>\n <ComboBox\n id=\"template\"\n v-model=\"state.templateId\"\n :options=\"templateOptions\"\n :has-error=\"!!formErrors.template\"\n :placeholder=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.TEMPLATE.PLACEHOLDER')\"\n :message=\"formErrors.template\"\n class=\"[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:dark:outline-n-weak [&>div>button:not(.focused)]:hover:!outline-n-slate-6\"\n />\n <p class=\"mt-1 text-xs text-n-slate-11\">\n {{ t('CAMPAIGN.WHATSAPP.CREATE.FORM.TEMPLATE.INFO') }}\n </p>\n </div>\n\n <!-- Template Parser -->\n <WhatsAppTemplateParser\n v-if=\"selectedTemplate\"\n ref=\"templateParserRef\"\n :template=\"selectedTemplate\"\n />\n\n <div class=\"flex flex-col gap-1\">\n <label for=\"audience\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAMPAIGN.WHATSAPP.CREATE.FORM.AUDIENCE.LABEL') }}\n </label>\n <TagMultiSelectComboBox\n v-model=\"state.selectedAudience\"\n :options=\"audienceList\"\n :label=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.AUDIENCE.LABEL')\"\n :placeholder=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.AUDIENCE.PLACEHOLDER')\"\n :has-error=\"!!formErrors.audience\"\n :message=\"formErrors.audience\"\n class=\"[&>div>button]:bg-n-alpha-black2\"\n />\n </div>\n\n <Input\n v-model=\"state.scheduledAt\"\n :label=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.SCHEDULED_AT.LABEL')\"\n type=\"datetime-local\"\n :min=\"currentDateTime\"\n :placeholder=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.SCHEDULED_AT.PLACEHOLDER')\"\n :message=\"formErrors.scheduledAt\"\n :message-type=\"formErrors.scheduledAt ? 'error' : 'info'\"\n />\n\n <div class=\"flex gap-3 justify-between items-center w-full\">\n <Button\n variant=\"faded\"\n color=\"slate\"\n type=\"button\"\n :label=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.BUTTONS.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n :label=\"t('CAMPAIGN.WHATSAPP.CREATE.FORM.BUTTONS.CREATE')\"\n class=\"w-full\"\n type=\"submit\"\n :is-loading=\"isCreating\"\n :disabled=\"isCreating || isSubmitDisabled\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CardLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Companies/CompaniesCard/CompaniesCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Companies/CompaniesHeader/CompanyHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Companies/CompaniesHeader/components/CompanySortMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Companies/CompaniesListLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactLabels/ContactLabels.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactDeleteSection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsCard/story/ContactsCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsCard/story/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/ConfirmContactDeleteDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactExportDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactImportDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactMergeForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.FORM.${key}.PLACEHOLDER`' dynamic key is used'","line":134,"column":18,"nodeType":"CallExpression","endLine":136,"endColumn":6},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONTACTS_LAYOUT.CARD.SOCIAL_MEDIA.FORM.${key}.PLACEHOLDER`' dynamic key is used'","line":143,"column":18,"nodeType":"CallExpression","endLine":143,"endColumn":80}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, reactive, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { required, email } from '@vuelidate/validators';\nimport { useVuelidate } from '@vuelidate/core';\nimport { splitName } from '@chatwoot/utils';\nimport countries from 'shared/constants/countries.js';\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport PhoneNumberInput from 'dashboard/components-next/phonenumberinput/PhoneNumberInput.vue';\n\nconst props = defineProps({\n contactData: {\n type: Object,\n default: null,\n },\n isDetailsView: {\n type: Boolean,\n default: false,\n },\n isNewContact: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits(['update']);\n\nconst { t } = useI18n();\n\nconst FORM_CONFIG = {\n FIRST_NAME: { field: 'firstName' },\n LAST_NAME: { field: 'lastName' },\n EMAIL_ADDRESS: { field: 'email' },\n PHONE_NUMBER: { field: 'phoneNumber' },\n CITY: { field: 'additionalAttributes.city' },\n COUNTRY: { field: 'additionalAttributes.countryCode' },\n BIO: { field: 'additionalAttributes.description' },\n COMPANY_NAME: { field: 'additionalAttributes.companyName' },\n};\n\nconst SOCIAL_CONFIG = {\n LINKEDIN: 'i-ri-linkedin-box-fill',\n FACEBOOK: 'i-ri-facebook-circle-fill',\n INSTAGRAM: 'i-ri-instagram-line',\n TIKTOK: 'i-ri-tiktok-fill',\n TWITTER: 'i-ri-twitter-x-fill',\n GITHUB: 'i-ri-github-fill',\n};\n\nconst defaultState = {\n id: 0,\n name: '',\n email: '',\n firstName: '',\n lastName: '',\n phoneNumber: '',\n additionalAttributes: {\n description: '',\n companyName: '',\n countryCode: '',\n country: '',\n city: '',\n socialProfiles: {\n facebook: '',\n github: '',\n instagram: '',\n tiktok: '',\n linkedin: '',\n twitter: '',\n },\n },\n};\n\nconst state = reactive({ ...defaultState });\n\nconst validationRules = {\n firstName: { required },\n email: { email },\n};\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isFormInvalid = computed(() => v$.value.$invalid);\n\nconst prepareStateBasedOnProps = () => {\n if (props.isNewContact) {\n return; // Added to prevent state update for new contact form\n }\n\n const {\n id,\n name = '',\n email: emailAddress,\n phoneNumber,\n additionalAttributes = {},\n } = props.contactData || {};\n const { firstName, lastName } = splitName(name || '');\n const {\n description = '',\n companyName = '',\n countryCode = '',\n country = '',\n city = '',\n socialProfiles = {},\n } = additionalAttributes || {};\n\n Object.assign(state, {\n id,\n name,\n firstName,\n lastName,\n email: emailAddress,\n phoneNumber,\n additionalAttributes: {\n description,\n companyName,\n countryCode,\n country,\n city,\n socialProfiles,\n },\n });\n};\n\nconst countryOptions = computed(() =>\n countries.map(({ name, id }) => ({ label: name, value: id }))\n);\n\nconst editDetailsForm = computed(() =>\n Object.keys(FORM_CONFIG).map(key => ({\n key,\n placeholder: t(\n `CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.FORM.${key}.PLACEHOLDER`\n ),\n }))\n);\n\nconst socialProfilesForm = computed(() =>\n Object.entries(SOCIAL_CONFIG).map(([key, icon]) => ({\n key,\n placeholder: t(`CONTACTS_LAYOUT.CARD.SOCIAL_MEDIA.FORM.${key}.PLACEHOLDER`),\n icon,\n }))\n);\n\nconst isValidationField = key => {\n const field = FORM_CONFIG[key]?.field;\n return ['firstName', 'email'].includes(field);\n};\n\nconst getValidationKey = key => {\n return FORM_CONFIG[key]?.field;\n};\n\n// Creates a computed property for two-way form field binding\nconst getFormBinding = key => {\n const field = FORM_CONFIG[key]?.field;\n if (!field) return null;\n\n return computed({\n get: () => {\n // Handle firstName/lastName fields\n if (field === 'firstName' || field === 'lastName') {\n return state[field]?.toString() || '';\n }\n\n // Handle nested vs non-nested fields\n const [base, nested] = field.split('.');\n // Example: 'email' → state.email\n // Example: 'additionalAttributes.city' → state.additionalAttributes.city\n return (nested ? state[base][nested] : state[base])?.toString() || '';\n },\n\n set: async value => {\n // Handle name fields specially to maintain the combined 'name' field\n if (field === 'firstName' || field === 'lastName') {\n state[field] = value;\n // Example: firstName=\"John\", lastName=\"Doe\" → name=\"John Doe\"\n state.name = `${state.firstName} ${state.lastName}`.trim();\n } else {\n // Handle nested vs non-nested fields\n const [base, nested] = field.split('.');\n if (nested) {\n // Example: additionalAttributes.city = \"New York\"\n state[base][nested] = value;\n } else {\n // Example: email = \"test@example.com\"\n state[base] = value;\n }\n }\n\n const isFormValid = await v$.value.$validate();\n if (isFormValid) {\n const { firstName, lastName, ...stateWithoutNames } = state;\n emit('update', stateWithoutNames);\n }\n },\n });\n};\n\nconst getMessageType = key => {\n return isValidationField(key) && v$.value[getValidationKey(key)]?.$error\n ? 'error'\n : 'info';\n};\n\nconst handleCountrySelection = value => {\n const selectedCountry = countries.find(option => option.id === value);\n state.additionalAttributes.country = selectedCountry?.name || '';\n emit('update', state);\n};\n\nconst resetValidation = () => {\n v$.value.$reset();\n};\n\nconst resetForm = () => {\n Object.assign(state, defaultState);\n};\n\nwatch(\n () => props.contactData?.id,\n id => {\n if (id) prepareStateBasedOnProps();\n },\n { immediate: true }\n);\n\n// Expose state to parent component for avatar upload\ndefineExpose({\n state,\n resetValidation,\n isFormInvalid,\n resetForm,\n});\n</script>\n\n<template>\n <div class=\"flex flex-col gap-6\">\n <div class=\"flex flex-col items-start gap-2\">\n <span class=\"py-1 text-sm font-medium text-n-slate-12\">\n {{ t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.TITLE') }}\n </span>\n <div class=\"grid w-full grid-cols-1 gap-4 sm:grid-cols-2\">\n <template v-for=\"item in editDetailsForm\" :key=\"item.key\">\n <ComboBox\n v-if=\"item.key === 'COUNTRY'\"\n v-model=\"state.additionalAttributes.countryCode\"\n :options=\"countryOptions\"\n :placeholder=\"item.placeholder\"\n class=\"[&>div>button]:h-8\"\n :class=\"{\n '[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:!outline-transparent':\n !isDetailsView,\n '[&>div>button]:!bg-n-alpha-black2': isDetailsView,\n }\"\n @update:model-value=\"handleCountrySelection\"\n />\n <PhoneNumberInput\n v-else-if=\"item.key === 'PHONE_NUMBER'\"\n v-model=\"getFormBinding(item.key).value\"\n :placeholder=\"item.placeholder\"\n :show-border=\"isDetailsView\"\n />\n <Input\n v-else\n v-model=\"getFormBinding(item.key).value\"\n :placeholder=\"item.placeholder\"\n :message-type=\"getMessageType(item.key)\"\n :custom-input-class=\"`h-8 !pt-1 !pb-1 ${\n !isDetailsView\n ? '[&:not(.error,.focus)]:!outline-transparent'\n : ''\n }`\"\n class=\"w-full\"\n @input=\"\n isValidationField(item.key) &&\n v$[getValidationKey(item.key)].$touch()\n \"\n @blur=\"\n isValidationField(item.key) &&\n v$[getValidationKey(item.key)].$touch()\n \"\n />\n </template>\n </div>\n </div>\n <div class=\"flex flex-col items-start gap-2\">\n <span class=\"py-1 text-sm font-medium text-n-slate-12\">\n {{ t('CONTACTS_LAYOUT.CARD.SOCIAL_MEDIA.TITLE') }}\n </span>\n <div class=\"flex flex-wrap gap-2\">\n <div\n v-for=\"item in socialProfilesForm\"\n :key=\"item.key\"\n class=\"flex items-center h-8 gap-2 px-2 rounded-lg\"\n :class=\"{\n 'bg-n-alpha-2 dark:bg-n-solid-2': isDetailsView,\n 'bg-n-alpha-2 dark:bg-n-solid-3': !isDetailsView,\n }\"\n >\n <Icon\n :icon=\"item.icon\"\n class=\"flex-shrink-0 text-n-slate-11 size-4\"\n />\n <input\n v-model=\"\n state.additionalAttributes.socialProfiles[item.key.toLowerCase()]\n \"\n class=\"w-auto min-w-[100px] text-sm bg-transparent outline-none reset-base text-n-slate-12 dark:text-n-slate-12 placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10\"\n :placeholder=\"item.placeholder\"\n :size=\"item.placeholder.length\"\n @input=\"emit('update', state)\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/CreateNewContactDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/CreateSegmentDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/DeleteSegmentDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/story/ContactMergeForm.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/story/ContactsForm.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsForm/story/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactListHeaderWrapper.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.EMAIL_ADDRESS_DUPLICATE`' dynamic key is used'","line":95,"column":18,"nodeType":"CallExpression","endLine":95,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.PHONE_NUMBER_DUPLICATE`' dynamic key is used'","line":97,"column":18,"nodeType":"CallExpression","endLine":97,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.ERROR_MESSAGE`' dynamic key is used'","line":102,"column":16,"nodeType":"CallExpression","endLine":102,"endColumn":48}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, unref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useRouter } from 'vue-router';\nimport { useAlert, useTrack } from 'dashboard/composables';\nimport { CONTACTS_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';\nimport filterQueryGenerator from 'dashboard/helper/filterQueryGenerator';\nimport contactFilterItems from 'dashboard/routes/dashboard/contacts/contactFilterItems';\nimport {\n DuplicateContactException,\n ExceptionWithMessage,\n} from 'shared/helpers/CustomErrors';\nimport { generateValuesForEditCustomViews } from 'dashboard/helper/customViewsHelper';\nimport countries from 'shared/constants/countries';\nimport {\n useCamelCase,\n useSnakeCase,\n} from 'dashboard/composables/useTransformKeys';\n\nimport ContactsHeader from 'dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue';\nimport CreateNewContactDialog from 'dashboard/components-next/Contacts/ContactsForm/CreateNewContactDialog.vue';\nimport ContactExportDialog from 'dashboard/components-next/Contacts/ContactsForm/ContactExportDialog.vue';\nimport ContactImportDialog from 'dashboard/components-next/Contacts/ContactsForm/ContactImportDialog.vue';\nimport CreateSegmentDialog from 'dashboard/components-next/Contacts/ContactsForm/CreateSegmentDialog.vue';\nimport DeleteSegmentDialog from 'dashboard/components-next/Contacts/ContactsForm/DeleteSegmentDialog.vue';\nimport ContactsFilter from 'dashboard/components-next/filter/ContactsFilter.vue';\n\nconst props = defineProps({\n showSearch: { type: Boolean, default: true },\n searchValue: { type: String, default: '' },\n activeSort: { type: String, default: 'last_activity_at' },\n activeOrdering: { type: String, default: '' },\n headerTitle: { type: String, default: '' },\n segmentsId: { type: [String, Number], default: 0 },\n activeSegment: { type: Object, default: null },\n hasAppliedFilters: { type: Boolean, default: false },\n isLabelView: { type: Boolean, default: false },\n isActiveView: { type: Boolean, default: false },\n});\n\nconst emit = defineEmits([\n 'update:sort',\n 'search',\n 'applyFilter',\n 'clearFilters',\n]);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst router = useRouter();\n\nconst createNewContactDialogRef = ref(null);\nconst contactExportDialogRef = ref(null);\nconst contactImportDialogRef = ref(null);\nconst createSegmentDialogRef = ref(null);\nconst deleteSegmentDialogRef = ref(null);\n\nconst showFiltersModal = ref(false);\nconst appliedFilter = ref([]);\nconst segmentsQuery = ref({});\n\nconst appliedFilters = useMapGetter('contacts/getAppliedContactFiltersV4');\nconst contactAttributes = useMapGetter('attributes/getContactAttributes');\nconst labels = useMapGetter('labels/getLabels');\nconst hasActiveSegments = computed(\n () => props.activeSegment && props.segmentsId !== 0\n);\nconst activeSegmentName = computed(() => props.activeSegment?.name);\n\nconst openCreateNewContactDialog = async () => {\n await createNewContactDialogRef.value?.contactsFormRef.resetValidation();\n createNewContactDialogRef.value?.dialogRef.open();\n};\nconst openContactImportDialog = () =>\n contactImportDialogRef.value?.dialogRef.open();\nconst openContactExportDialog = () =>\n contactExportDialogRef.value?.dialogRef.open();\nconst openCreateSegmentDialog = () =>\n createSegmentDialogRef.value?.dialogRef.open();\nconst openDeleteSegmentDialog = () =>\n deleteSegmentDialogRef.value?.dialogRef.open();\n\nconst onCreate = async contact => {\n try {\n await store.dispatch('contacts/create', contact);\n createNewContactDialogRef.value?.onSuccess();\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.CONTACT_CREATION.SUCCESS_MESSAGE')\n );\n } catch (error) {\n const i18nPrefix = 'CONTACTS_LAYOUT.HEADER.ACTIONS.CONTACT_CREATION';\n if (error instanceof DuplicateContactException) {\n if (error.data.includes('email')) {\n useAlert(t(`${i18nPrefix}.EMAIL_ADDRESS_DUPLICATE`));\n } else if (error.data.includes('phone_number')) {\n useAlert(t(`${i18nPrefix}.PHONE_NUMBER_DUPLICATE`));\n }\n } else if (error instanceof ExceptionWithMessage) {\n useAlert(error.data);\n } else {\n useAlert(t(`${i18nPrefix}.ERROR_MESSAGE`));\n }\n }\n};\n\nconst onImport = async file => {\n try {\n await store.dispatch('contacts/import', file);\n contactImportDialogRef.value?.dialogRef.close();\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.IMPORT_CONTACT.SUCCESS_MESSAGE')\n );\n useTrack(CONTACTS_EVENTS.IMPORT_SUCCESS);\n } catch (error) {\n useAlert(\n error.message ??\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.IMPORT_CONTACT.ERROR_MESSAGE')\n );\n useTrack(CONTACTS_EVENTS.IMPORT_FAILURE);\n }\n};\n\nconst onExport = async query => {\n try {\n await store.dispatch('contacts/export', query);\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.EXPORT_CONTACT.SUCCESS_MESSAGE')\n );\n } catch (error) {\n useAlert(\n error.message ||\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.EXPORT_CONTACT.ERROR_MESSAGE')\n );\n }\n};\n\nconst onCreateSegment = async payload => {\n try {\n const payloadData = {\n ...payload,\n query: segmentsQuery.value,\n };\n const response = await store.dispatch('customViews/create', payloadData);\n createSegmentDialogRef.value?.dialogRef.close();\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.FILTERS.CREATE_SEGMENT.SUCCESS_MESSAGE')\n );\n const segmentId = response?.data?.id;\n if (!segmentId) return;\n // Navigate to the created segment\n router.push({\n name: 'contacts_dashboard_segments_index',\n params: { segmentId },\n query: { page: 1 },\n });\n } catch {\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.FILTERS.CREATE_SEGMENT.ERROR_MESSAGE')\n );\n }\n};\n\nconst onDeleteSegment = async payload => {\n try {\n await store.dispatch('customViews/delete', {\n id: Number(props.segmentsId),\n ...payload,\n });\n router.push({\n name: 'contacts_dashboard_index',\n query: {\n page: 1,\n },\n });\n deleteSegmentDialogRef.value?.dialogRef.close();\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.FILTERS.DELETE_SEGMENT.SUCCESS_MESSAGE')\n );\n } catch (error) {\n useAlert(\n t('CONTACTS_LAYOUT.HEADER.ACTIONS.FILTERS.DELETE_SEGMENT.ERROR_MESSAGE')\n );\n }\n};\n\nconst closeAdvanceFiltersModal = () => {\n showFiltersModal.value = false;\n appliedFilter.value = [];\n};\n\nconst clearFilters = async () => {\n emit('clearFilters');\n};\n\nconst onApplyFilter = async payload => {\n payload = useSnakeCase(payload);\n segmentsQuery.value = filterQueryGenerator(payload);\n emit('applyFilter', filterQueryGenerator(payload));\n showFiltersModal.value = false;\n};\n\nconst onUpdateSegment = async (payload, segmentName) => {\n payload = useSnakeCase(payload);\n const payloadData = {\n ...props.activeSegment,\n name: segmentName,\n query: filterQueryGenerator(payload),\n };\n await store.dispatch('customViews/update', payloadData);\n closeAdvanceFiltersModal();\n};\n\nconst setParamsForEditSegmentModal = () => {\n return {\n countries,\n filterTypes: contactFilterItems,\n allCustomAttributes: useSnakeCase(contactAttributes.value),\n labels: labels.value || [],\n };\n};\n\nconst initializeSegmentToFilterModal = segment => {\n const query = unref(segment)?.query?.payload;\n if (!Array.isArray(query)) return;\n\n const newFilters = query.map(filter => {\n const transformed = useCamelCase(filter);\n const values = Array.isArray(transformed.values)\n ? generateValuesForEditCustomViews(\n useSnakeCase(filter),\n setParamsForEditSegmentModal()\n )\n : [];\n\n return {\n attributeKey: transformed.attributeKey,\n attributeModel: transformed.attributeModel,\n customAttributeType: transformed.customAttributeType,\n filterOperator: transformed.filterOperator,\n queryOperator: transformed.queryOperator ?? 'and',\n values,\n };\n });\n\n appliedFilter.value = [...appliedFilter.value, ...newFilters];\n};\n\nconst onToggleFilters = () => {\n appliedFilter.value = [];\n if (hasActiveSegments.value) {\n initializeSegmentToFilterModal(props.activeSegment);\n } else {\n appliedFilter.value = props.hasAppliedFilters\n ? [...appliedFilters.value]\n : [\n {\n attributeKey: 'name',\n filterOperator: 'equal_to',\n values: '',\n queryOperator: 'and',\n attributeModel: 'standard',\n },\n ];\n }\n showFiltersModal.value = true;\n};\n\ndefineExpose({\n onToggleFilters,\n});\n</script>\n\n<template>\n <ContactsHeader\n :show-search=\"showSearch\"\n :search-value=\"searchValue\"\n :active-sort=\"activeSort\"\n :active-ordering=\"activeOrdering\"\n :header-title=\"headerTitle\"\n :is-segments-view=\"hasActiveSegments\"\n :is-label-view=\"isLabelView\"\n :is-active-view=\"isActiveView\"\n :has-active-filters=\"hasAppliedFilters\"\n :button-label=\"t('CONTACTS_LAYOUT.HEADER.MESSAGE_BUTTON')\"\n @search=\"emit('search', $event)\"\n @update:sort=\"emit('update:sort', $event)\"\n @add=\"openCreateNewContactDialog\"\n @import=\"openContactImportDialog\"\n @export=\"openContactExportDialog\"\n @filter=\"onToggleFilters\"\n @create-segment=\"openCreateSegmentDialog\"\n @delete-segment=\"openDeleteSegmentDialog\"\n >\n <template #filter>\n <div\n class=\"absolute mt-1 ltr:-right-52 rtl:-left-52 sm:ltr:right-0 sm:rtl:left-0 top-full\"\n >\n <ContactsFilter\n v-if=\"showFiltersModal\"\n v-model=\"appliedFilter\"\n :segment-name=\"activeSegmentName\"\n :is-segment-view=\"hasActiveSegments\"\n @apply-filter=\"onApplyFilter\"\n @update-segment=\"onUpdateSegment\"\n @close=\"closeAdvanceFiltersModal\"\n @clear-filters=\"clearFilters\"\n />\n </div>\n </template>\n </ContactsHeader>\n\n <CreateNewContactDialog ref=\"createNewContactDialogRef\" @create=\"onCreate\" />\n <ContactExportDialog ref=\"contactExportDialogRef\" @export=\"onExport\" />\n <ContactImportDialog ref=\"contactImportDialogRef\" @import=\"onImport\" />\n <CreateSegmentDialog ref=\"createSegmentDialogRef\" @create=\"onCreateSegment\" />\n <DeleteSegmentDialog ref=\"deleteSegmentDialogRef\" @delete=\"onDeleteSegment\" />\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactMoreActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactSortMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactsActiveFiltersPreview.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsHeader/story/ContactHeader.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsListLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributeItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributes.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactHistory.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactMerge.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactNotes.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/ContactNoteItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/story/ContactNoteItem.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/story/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/EmptyState/ContactEmptyState.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/EmptyState/ContactEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/EmptyState/contactEmptyStateContent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n •\n ' is used","line":151,"column":80,"nodeType":null,"endLine":153,"endColumn":13,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4690],"text":"<i18n>\n{\n \"en\": {\n \"\\n •\\n \": \"\\n •\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed, ref, onMounted } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\n\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ContactLabels from 'dashboard/components-next/Contacts/ContactLabels/ContactLabels.vue';\nimport ContactsForm from 'dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue';\nimport ConfirmContactDeleteDialog from 'dashboard/components-next/Contacts/ContactsForm/ConfirmContactDeleteDialog.vue';\nimport Policy from 'dashboard/components/policy.vue';\n\nconst props = defineProps({\n selectedContact: {\n type: Object,\n required: true,\n },\n});\n\nconst emit = defineEmits(['goToContactsList']);\n\nconst { t } = useI18n();\nconst store = useStore();\n\nconst confirmDeleteContactDialogRef = ref(null);\n\nconst avatarFile = ref(null);\nconst avatarUrl = ref('');\n\nconst contactsFormRef = ref(null);\n\nconst uiFlags = useMapGetter('contacts/getUIFlags');\nconst isUpdating = computed(() => uiFlags.value.isUpdating);\n\nconst isFormInvalid = computed(() => contactsFormRef.value?.isFormInvalid);\n\nconst contactData = ref({});\n\nconst getInitialContactData = () => {\n if (!props.selectedContact) return {};\n return { ...props.selectedContact };\n};\n\nonMounted(() => {\n Object.assign(contactData.value, getInitialContactData());\n});\n\nconst createdAt = computed(() => {\n return contactData.value?.createdAt\n ? dynamicTime(contactData.value.createdAt)\n : '';\n});\n\nconst lastActivityAt = computed(() => {\n return contactData.value?.lastActivityAt\n ? dynamicTime(contactData.value.lastActivityAt)\n : '';\n});\n\nconst avatarSrc = computed(() => {\n return avatarUrl.value ? avatarUrl.value : contactData.value?.thumbnail;\n});\n\nconst handleFormUpdate = updatedData => {\n Object.assign(contactData.value, updatedData);\n};\n\nconst updateContact = async () => {\n try {\n const { customAttributes, ...basicContactData } = contactData.value;\n await store.dispatch('contacts/update', basicContactData);\n await store.dispatch(\n 'contacts/fetchContactableInbox',\n props.selectedContact.id\n );\n useAlert(t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.ERROR_MESSAGE'));\n }\n};\n\nconst openConfirmDeleteContactDialog = () => {\n confirmDeleteContactDialogRef.value?.dialogRef.open();\n};\n\nconst handleAvatarUpload = async ({ file, url }) => {\n avatarFile.value = file;\n avatarUrl.value = url;\n\n try {\n await store.dispatch('contacts/update', {\n ...contactsFormRef.value?.state,\n avatar: file,\n isFormData: true,\n });\n useAlert(t('CONTACTS_LAYOUT.DETAILS.AVATAR.UPLOAD.SUCCESS_MESSAGE'));\n } catch {\n useAlert(t('CONTACTS_LAYOUT.DETAILS.AVATAR.UPLOAD.ERROR_MESSAGE'));\n }\n};\n\nconst handleAvatarDelete = async () => {\n try {\n if (props.selectedContact && props.selectedContact.id) {\n await store.dispatch('contacts/deleteAvatar', props.selectedContact.id);\n useAlert(t('CONTACTS_LAYOUT.DETAILS.AVATAR.DELETE.SUCCESS_MESSAGE'));\n }\n avatarFile.value = null;\n avatarUrl.value = '';\n contactData.value.thumbnail = null;\n } catch (error) {\n useAlert(\n error.message\n ? error.message\n : t('CONTACTS_LAYOUT.DETAILS.AVATAR.DELETE.ERROR_MESSAGE')\n );\n }\n};\n</script>\n\n<template>\n <div class=\"flex flex-col items-start gap-8 pb-6\">\n <div class=\"flex flex-col items-start gap-3\">\n <Avatar\n :src=\"avatarSrc || ''\"\n :name=\"selectedContact?.name || ''\"\n :size=\"72\"\n allow-upload\n @upload=\"handleAvatarUpload\"\n @delete=\"handleAvatarDelete\"\n />\n <div class=\"flex flex-col gap-1\">\n <h3 class=\"text-base font-medium text-n-slate-12\">\n {{ selectedContact?.name }}\n </h3>\n <div class=\"flex flex-col gap-1.5\">\n <span\n v-if=\"selectedContact?.identifier\"\n class=\"inline-flex items-center gap-1 text-sm text-n-slate-11\"\n >\n <span class=\"i-ph-user-gear text-n-slate-10 size-4\" />\n {{ selectedContact?.identifier }}\n </span>\n <span class=\"inline-flex items-center gap-1 text-sm text-n-slate-11\">\n <span\n v-if=\"selectedContact?.identifier\"\n class=\"i-ph-activity text-n-slate-10 size-4\"\n />\n {{ $t('CONTACTS_LAYOUT.DETAILS.CREATED_AT', { date: createdAt }) }}{{$t(`\n •\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref, onMounted } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\n\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ContactLabels from 'dashboard/components-next/Contacts/ContactLabels/ContactLabels.vue';\nimport ContactsForm from 'dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue';\nimport ConfirmContactDeleteDialog from 'dashboard/components-next/Contacts/ContactsForm/ConfirmContactDeleteDialog.vue';\nimport Policy from 'dashboard/components/policy.vue';\n\nconst props = defineProps({\n selectedContact: {\n type: Object,\n required: true,\n },\n});\n\nconst emit = defineEmits(['goToContactsList']);\n\nconst { t } = useI18n();\nconst store = useStore();\n\nconst confirmDeleteContactDialogRef = ref(null);\n\nconst avatarFile = ref(null);\nconst avatarUrl = ref('');\n\nconst contactsFormRef = ref(null);\n\nconst uiFlags = useMapGetter('contacts/getUIFlags');\nconst isUpdating = computed(() => uiFlags.value.isUpdating);\n\nconst isFormInvalid = computed(() => contactsFormRef.value?.isFormInvalid);\n\nconst contactData = ref({});\n\nconst getInitialContactData = () => {\n if (!props.selectedContact) return {};\n return { ...props.selectedContact };\n};\n\nonMounted(() => {\n Object.assign(contactData.value, getInitialContactData());\n});\n\nconst createdAt = computed(() => {\n return contactData.value?.createdAt\n ? dynamicTime(contactData.value.createdAt)\n : '';\n});\n\nconst lastActivityAt = computed(() => {\n return contactData.value?.lastActivityAt\n ? dynamicTime(contactData.value.lastActivityAt)\n : '';\n});\n\nconst avatarSrc = computed(() => {\n return avatarUrl.value ? avatarUrl.value : contactData.value?.thumbnail;\n});\n\nconst handleFormUpdate = updatedData => {\n Object.assign(contactData.value, updatedData);\n};\n\nconst updateContact = async () => {\n try {\n const { customAttributes, ...basicContactData } = contactData.value;\n await store.dispatch('contacts/update', basicContactData);\n await store.dispatch(\n 'contacts/fetchContactableInbox',\n props.selectedContact.id\n );\n useAlert(t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.ERROR_MESSAGE'));\n }\n};\n\nconst openConfirmDeleteContactDialog = () => {\n confirmDeleteContactDialogRef.value?.dialogRef.open();\n};\n\nconst handleAvatarUpload = async ({ file, url }) => {\n avatarFile.value = file;\n avatarUrl.value = url;\n\n try {\n await store.dispatch('contacts/update', {\n ...contactsFormRef.value?.state,\n avatar: file,\n isFormData: true,\n });\n useAlert(t('CONTACTS_LAYOUT.DETAILS.AVATAR.UPLOAD.SUCCESS_MESSAGE'));\n } catch {\n useAlert(t('CONTACTS_LAYOUT.DETAILS.AVATAR.UPLOAD.ERROR_MESSAGE'));\n }\n};\n\nconst handleAvatarDelete = async () => {\n try {\n if (props.selectedContact && props.selectedContact.id) {\n await store.dispatch('contacts/deleteAvatar', props.selectedContact.id);\n useAlert(t('CONTACTS_LAYOUT.DETAILS.AVATAR.DELETE.SUCCESS_MESSAGE'));\n }\n avatarFile.value = null;\n avatarUrl.value = '';\n contactData.value.thumbnail = null;\n } catch (error) {\n useAlert(\n error.message\n ? error.message\n : t('CONTACTS_LAYOUT.DETAILS.AVATAR.DELETE.ERROR_MESSAGE')\n );\n }\n};\n</script>\n\n<template>\n <div class=\"flex flex-col items-start gap-8 pb-6\">\n <div class=\"flex flex-col items-start gap-3\">\n <Avatar\n :src=\"avatarSrc || ''\"\n :name=\"selectedContact?.name || ''\"\n :size=\"72\"\n allow-upload\n @upload=\"handleAvatarUpload\"\n @delete=\"handleAvatarDelete\"\n />\n <div class=\"flex flex-col gap-1\">\n <h3 class=\"text-base font-medium text-n-slate-12\">\n {{ selectedContact?.name }}\n </h3>\n <div class=\"flex flex-col gap-1.5\">\n <span\n v-if=\"selectedContact?.identifier\"\n class=\"inline-flex items-center gap-1 text-sm text-n-slate-11\"\n >\n <span class=\"i-ph-user-gear text-n-slate-10 size-4\" />\n {{ selectedContact?.identifier }}\n </span>\n <span class=\"inline-flex items-center gap-1 text-sm text-n-slate-11\">\n <span\n v-if=\"selectedContact?.identifier\"\n class=\"i-ph-activity text-n-slate-10 size-4\"\n />\n {{ $t('CONTACTS_LAYOUT.DETAILS.CREATED_AT', { date: createdAt }) }}\n •\n {{\n $t('CONTACTS_LAYOUT.DETAILS.LAST_ACTIVITY', {\n date: lastActivityAt,\n })\n }}\n </span>\n </div>\n </div>\n <ContactLabels :contact-id=\"selectedContact?.id\" />\n </div>\n <div class=\"flex flex-col items-start gap-6\">\n <ContactsForm\n ref=\"contactsFormRef\"\n :contact-data=\"contactData\"\n is-details-view\n @update=\"handleFormUpdate\"\n />\n <Button\n :label=\"t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.UPDATE_BUTTON')\"\n size=\"sm\"\n :is-loading=\"isUpdating\"\n :disabled=\"isUpdating || isFormInvalid\"\n @click=\"updateContact\"\n />\n </div>\n <Policy :permissions=\"['administrator']\">\n <div\n class=\"flex flex-col items-start w-full gap-4 pt-6 border-t border-n-strong\"\n >\n <div class=\"flex flex-col gap-2\">\n <h6 class=\"text-base font-medium text-n-slate-12\">\n {{ t('CONTACTS_LAYOUT.DETAILS.DELETE_CONTACT') }}\n </h6>\n <span class=\"text-sm text-n-slate-11\">\n {{ t('CONTACTS_LAYOUT.DETAILS.DELETE_CONTACT_DESCRIPTION') }}\n </span>\n </div>\n <Button\n :label=\"t('CONTACTS_LAYOUT.DETAILS.DELETE_CONTACT')\"\n color=\"ruby\"\n @click=\"openConfirmDeleteContactDialog\"\n />\n </div>\n <ConfirmContactDeleteDialog\n ref=\"confirmDeleteContactDialogRef\"\n :selected-contact=\"selectedContact\"\n @go-to-contacts-list=\"emit('goToContactsList')\"\n />\n </Policy>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.EMAIL_ADDRESS.DUPLICATE`' dynamic key is used'","line":43,"column":18,"nodeType":"CallExpression","endLine":43,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.PHONE_NUMBER.DUPLICATE`' dynamic key is used'","line":45,"column":18,"nodeType":"CallExpression","endLine":45,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.ERROR_MESSAGE`' dynamic key is used'","line":50,"column":16,"nodeType":"CallExpression","endLine":50,"endColumn":48}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { useRouter, useRoute } from 'vue-router';\nimport {\n DuplicateContactException,\n ExceptionWithMessage,\n} from 'shared/helpers/CustomErrors';\nimport ContactsCard from 'dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue';\n\nconst props = defineProps({\n contacts: { type: Array, required: true },\n selectedContactIds: {\n type: Array,\n default: () => [],\n },\n});\n\nconst emit = defineEmits(['toggleContact']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst router = useRouter();\nconst route = useRoute();\n\nconst uiFlags = useMapGetter('contacts/getUIFlags');\nconst isUpdating = computed(() => uiFlags.value.isUpdating);\nconst expandedCardId = ref(null);\nconst hoveredAvatarId = ref(null);\n\nconst selectedIdsSet = computed(() => new Set(props.selectedContactIds || []));\n\nconst updateContact = async updatedData => {\n try {\n await store.dispatch('contacts/update', updatedData);\n useAlert(t('CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.SUCCESS_MESSAGE'));\n } catch (error) {\n const i18nPrefix = 'CONTACTS_LAYOUT.CARD.EDIT_DETAILS_FORM.FORM';\n if (error instanceof DuplicateContactException) {\n if (error.data.includes('email')) {\n useAlert(t(`${i18nPrefix}.EMAIL_ADDRESS.DUPLICATE`));\n } else if (error.data.includes('phone_number')) {\n useAlert(t(`${i18nPrefix}.PHONE_NUMBER.DUPLICATE`));\n }\n } else if (error instanceof ExceptionWithMessage) {\n useAlert(error.data);\n } else {\n useAlert(t(`${i18nPrefix}.ERROR_MESSAGE`));\n }\n }\n};\n\nconst onClickViewDetails = async id => {\n const routeTypes = {\n contacts_dashboard_segments_index: ['contacts_edit_segment', 'segmentId'],\n contacts_dashboard_labels_index: ['contacts_edit_label', 'label'],\n };\n const [name, paramKey] = routeTypes[route.name] || ['contacts_edit'];\n const params = {\n contactId: id,\n ...(paramKey && { [paramKey]: route.params[paramKey] }),\n };\n\n await router.push({ name, params, query: route.query });\n};\n\nconst toggleExpanded = id => {\n expandedCardId.value = expandedCardId.value === id ? null : id;\n};\n\nconst isSelected = id => selectedIdsSet.value.has(id);\n\nconst shouldShowSelection = id => {\n return hoveredAvatarId.value === id || isSelected(id);\n};\n\nconst handleSelect = (id, value) => {\n emit('toggleContact', { id, value });\n};\n\nconst handleAvatarHover = (id, isHovered) => {\n hoveredAvatarId.value = isHovered ? id : null;\n};\n</script>\n\n<template>\n <div class=\"flex flex-col gap-4\">\n <div v-for=\"contact in contacts\" :key=\"contact.id\" class=\"relative\">\n <ContactsCard\n :id=\"contact.id\"\n :name=\"contact.name\"\n :email=\"contact.email\"\n :thumbnail=\"contact.thumbnail\"\n :phone-number=\"contact.phoneNumber\"\n :additional-attributes=\"contact.additionalAttributes\"\n :availability-status=\"contact.availabilityStatus\"\n :is-expanded=\"expandedCardId === contact.id\"\n :is-updating=\"isUpdating\"\n :selectable=\"shouldShowSelection(contact.id)\"\n :is-selected=\"isSelected(contact.id)\"\n @toggle=\"toggleExpanded(contact.id)\"\n @update-contact=\"updateContact\"\n @show-contact=\"onClickViewDetails\"\n @select=\"value => handleSelect(contact.id, value)\"\n @avatar-hover=\"value => handleAvatarHover(contact.id, value)\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Contacts/VoiceCallButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/CardLabels.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/CardMessagePreview.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/CardMessagePreviewWithMeta.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/CardPriorityIcon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/ConversationCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/ConversationCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/ConversationCard/SLACardLabel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Conversation/SidepanelSwitch.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/ConversationWorkflow/AttributeListItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/AttributeBadge.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'config.labelKey' dynamic key is used'","line":39,"column":7,"nodeType":"CallExpression","endLine":39,"endColumn":25}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'resolution',\n validator: value => ['pre-chat', 'resolution'].includes(value),\n },\n});\n\nconst { t } = useI18n();\n\nconst attributeConfig = {\n 'pre-chat': {\n colorClass: 'text-n-blue-11',\n icon: 'i-lucide-message-circle',\n labelKey: 'ATTRIBUTES_MGMT.BADGES.PRE_CHAT',\n },\n resolution: {\n colorClass: 'text-n-teal-11',\n icon: 'i-lucide-circle-check-big',\n labelKey: 'ATTRIBUTES_MGMT.BADGES.RESOLUTION',\n },\n};\nconst config = computed(\n () => attributeConfig[props.type] || attributeConfig.resolution\n);\n</script>\n\n<template>\n <div\n class=\"flex gap-1 justify-center items-center px-1.5 py-1 rounded-md shadow outline-1 outline outline-n-container bg-n-solid-2\"\n >\n <Icon :icon=\"config.icon\" class=\"size-4\" :class=\"config.colorClass\" />\n <span class=\"text-xs\" :class=\"config.colorClass\">{{\n t(config.labelKey)\n }}</span>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/CheckboxAttribute.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/DateAttribute.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/ListAttribute.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/OtherAttribute.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/story/CustomAttributes.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/CustomAttributes/story/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Editor/Editor.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' / ' is used","line":123,"column":31,"nodeType":null,"endLine":123,"endColumn":34,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3877],"text":"<i18n>\n{\n \"en\": {\n \" / \": \" / \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed, ref, watch, useSlots } from 'vue';\n\nimport WootEditor from 'dashboard/components/widgets/WootWriter/Editor.vue';\n\nconst props = defineProps({\n modelValue: { type: String, default: '' },\n label: { type: String, default: '' },\n placeholder: { type: String, default: '' },\n focusOnMount: { type: Boolean, default: false },\n maxLength: { type: Number, default: 200 },\n showCharacterCount: { type: Boolean, default: true },\n disabled: { type: Boolean, default: false },\n message: { type: String, default: '' },\n messageType: {\n type: String,\n default: 'info',\n validator: value => ['info', 'error', 'success'].includes(value),\n },\n enableVariables: { type: Boolean, default: false },\n enableCannedResponses: { type: Boolean, default: true },\n enableCaptainTools: { type: Boolean, default: false },\n signature: { type: String, default: '' },\n allowSignature: { type: Boolean, default: false },\n sendWithSignature: { type: Boolean, default: false },\n channelType: { type: String, default: '' },\n medium: { type: String, default: '' },\n});\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst slots = useSlots();\n\nconst isFocused = ref(false);\n\nconst characterCount = computed(() => props.modelValue.length);\n\nconst messageClass = computed(() => {\n switch (props.messageType) {\n case 'error':\n return 'text-n-ruby-9 dark:text-n-ruby-9';\n case 'success':\n return 'text-n-teal-10 dark:text-n-teal-10';\n default:\n return 'text-n-slate-11 dark:text-n-slate-11';\n }\n});\n\nconst handleInput = value => {\n if (!props.disabled) {\n emit('update:modelValue', value);\n }\n};\n\nconst handleFocus = () => {\n if (!props.disabled) {\n isFocused.value = true;\n }\n};\n\nconst handleBlur = () => {\n if (!props.disabled) {\n isFocused.value = false;\n }\n};\n\nwatch(\n () => props.modelValue,\n newValue => {\n if (props.maxLength && props.showCharacterCount && !slots.actions) {\n if (characterCount.value >= props.maxLength) {\n emit('update:modelValue', newValue.slice(0, props.maxLength));\n }\n }\n }\n);\n</script>\n\n<template>\n <div class=\"flex flex-col min-w-0 gap-1\">\n <label v-if=\"label\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ label }}\n </label>\n <div\n class=\"flex flex-col w-full gap-2 px-3 py-3 transition-all duration-500 ease-in-out border rounded-lg editor-wrapper bg-n-alpha-black2\"\n :class=\"[\n {\n 'cursor-not-allowed opacity-50 pointer-events-none !bg-n-alpha-black2 disabled:border-n-weak dark:disabled:border-n-weak':\n disabled,\n 'border-n-brand dark:border-n-brand': isFocused,\n 'hover:border-n-slate-6 dark:hover:border-n-slate-6 border-n-weak dark:border-n-weak':\n !isFocused && messageType !== 'error',\n 'border-n-ruby-8 dark:border-n-ruby-8 hover:border-n-ruby-9 dark:hover:border-n-ruby-9':\n messageType === 'error' && !isFocused,\n },\n ]\"\n >\n <WootEditor\n :model-value=\"modelValue\"\n :placeholder=\"placeholder\"\n :focus-on-mount=\"focusOnMount\"\n :disabled=\"disabled\"\n :enable-variables=\"enableVariables\"\n :enable-canned-responses=\"enableCannedResponses\"\n :enable-captain-tools=\"enableCaptainTools\"\n :signature=\"signature\"\n :allow-signature=\"allowSignature\"\n :send-with-signature=\"sendWithSignature\"\n :channel-type=\"channelType\"\n :medium=\"medium\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n <div\n v-if=\"showCharacterCount || slots.actions\"\n class=\"flex items-center justify-end h-4 ltr:right-3 rtl:left-3\"\n >\n <span\n v-if=\"showCharacterCount && !slots.actions\"\n class=\"text-xs tabular-nums text-n-slate-10\"\n >\n {{ characterCount }}{{$t(' / ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref, watch, useSlots } from 'vue';\n\nimport WootEditor from 'dashboard/components/widgets/WootWriter/Editor.vue';\n\nconst props = defineProps({\n modelValue: { type: String, default: '' },\n label: { type: String, default: '' },\n placeholder: { type: String, default: '' },\n focusOnMount: { type: Boolean, default: false },\n maxLength: { type: Number, default: 200 },\n showCharacterCount: { type: Boolean, default: true },\n disabled: { type: Boolean, default: false },\n message: { type: String, default: '' },\n messageType: {\n type: String,\n default: 'info',\n validator: value => ['info', 'error', 'success'].includes(value),\n },\n enableVariables: { type: Boolean, default: false },\n enableCannedResponses: { type: Boolean, default: true },\n enableCaptainTools: { type: Boolean, default: false },\n signature: { type: String, default: '' },\n allowSignature: { type: Boolean, default: false },\n sendWithSignature: { type: Boolean, default: false },\n channelType: { type: String, default: '' },\n medium: { type: String, default: '' },\n});\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst slots = useSlots();\n\nconst isFocused = ref(false);\n\nconst characterCount = computed(() => props.modelValue.length);\n\nconst messageClass = computed(() => {\n switch (props.messageType) {\n case 'error':\n return 'text-n-ruby-9 dark:text-n-ruby-9';\n case 'success':\n return 'text-n-teal-10 dark:text-n-teal-10';\n default:\n return 'text-n-slate-11 dark:text-n-slate-11';\n }\n});\n\nconst handleInput = value => {\n if (!props.disabled) {\n emit('update:modelValue', value);\n }\n};\n\nconst handleFocus = () => {\n if (!props.disabled) {\n isFocused.value = true;\n }\n};\n\nconst handleBlur = () => {\n if (!props.disabled) {\n isFocused.value = false;\n }\n};\n\nwatch(\n () => props.modelValue,\n newValue => {\n if (props.maxLength && props.showCharacterCount && !slots.actions) {\n if (characterCount.value >= props.maxLength) {\n emit('update:modelValue', newValue.slice(0, props.maxLength));\n }\n }\n }\n);\n</script>\n\n<template>\n <div class=\"flex flex-col min-w-0 gap-1\">\n <label v-if=\"label\" class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ label }}\n </label>\n <div\n class=\"flex flex-col w-full gap-2 px-3 py-3 transition-all duration-500 ease-in-out border rounded-lg editor-wrapper bg-n-alpha-black2\"\n :class=\"[\n {\n 'cursor-not-allowed opacity-50 pointer-events-none !bg-n-alpha-black2 disabled:border-n-weak dark:disabled:border-n-weak':\n disabled,\n 'border-n-brand dark:border-n-brand': isFocused,\n 'hover:border-n-slate-6 dark:hover:border-n-slate-6 border-n-weak dark:border-n-weak':\n !isFocused && messageType !== 'error',\n 'border-n-ruby-8 dark:border-n-ruby-8 hover:border-n-ruby-9 dark:hover:border-n-ruby-9':\n messageType === 'error' && !isFocused,\n },\n ]\"\n >\n <WootEditor\n :model-value=\"modelValue\"\n :placeholder=\"placeholder\"\n :focus-on-mount=\"focusOnMount\"\n :disabled=\"disabled\"\n :enable-variables=\"enableVariables\"\n :enable-canned-responses=\"enableCannedResponses\"\n :enable-captain-tools=\"enableCaptainTools\"\n :signature=\"signature\"\n :allow-signature=\"allowSignature\"\n :send-with-signature=\"sendWithSignature\"\n :channel-type=\"channelType\"\n :medium=\"medium\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n <div\n v-if=\"showCharacterCount || slots.actions\"\n class=\"flex items-center justify-end h-4 ltr:right-3 rtl:left-3\"\n >\n <span\n v-if=\"showCharacterCount && !slots.actions\"\n class=\"text-xs tabular-nums text-n-slate-10\"\n >\n {{ characterCount }} / {{ maxLength }}\n </span>\n <slot v-else name=\"actions\" />\n </div>\n </div>\n <p\n v-if=\"message\"\n class=\"min-w-0 mt-1 mb-0 text-xs truncate transition-all duration-500 ease-in-out\"\n :class=\"messageClass\"\n >\n {{ message }}\n </p>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.editor-wrapper {\n ::v-deep {\n .ProseMirror-menubar-wrapper {\n .ProseMirror.ProseMirror-woot-style {\n p {\n @apply first:mt-0 !important;\n }\n\n .empty-node {\n @apply m-0 !important;\n\n &::before {\n @apply text-n-slate-11 dark:text-n-slate-11;\n }\n }\n }\n }\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/EmptyStateLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/ArticleCard/ArticleCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/ArticleCard/ArticleCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'item.label' dynamic key is used'","line":58,"column":36,"nodeType":"CallExpression","endLine":58,"endColumn":49}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useToggle } from '@vueuse/core';\nimport { useI18n } from 'vue-i18n';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\nimport {\n ARTICLE_MENU_ITEMS,\n ARTICLE_MENU_OPTIONS,\n ARTICLE_STATUSES,\n} from 'dashboard/helper/portalHelper';\n\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport CardLayout from 'dashboard/components-next/CardLayout.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n required: true,\n },\n title: {\n type: String,\n required: true,\n },\n status: {\n type: String,\n required: true,\n },\n author: {\n type: Object,\n default: null,\n },\n category: {\n type: Object,\n required: true,\n },\n views: {\n type: Number,\n required: true,\n },\n updatedAt: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['openArticle', 'articleAction']);\n\nconst { t } = useI18n();\n\nconst [showActionsDropdown, toggleDropdown] = useToggle();\n\nconst articleMenuItems = computed(() => {\n const commonItems = Object.entries(ARTICLE_MENU_ITEMS).reduce(\n (acc, [key, item]) => {\n acc[key] = { ...item, label: t(item.label) };\n return acc;\n },\n {}\n );\n\n const statusItems = (\n ARTICLE_MENU_OPTIONS[props.status] ||\n ARTICLE_MENU_OPTIONS[ARTICLE_STATUSES.PUBLISHED]\n ).map(key => commonItems[key]);\n\n return [...statusItems, commonItems.delete];\n});\n\nconst statusTextColor = computed(() => {\n switch (props.status) {\n case 'archived':\n return 'text-n-slate-12';\n case 'draft':\n return 'text-n-amber-11';\n default:\n return 'text-n-teal-11';\n }\n});\n\nconst statusText = computed(() => {\n switch (props.status) {\n case 'archived':\n return t('HELP_CENTER.ARTICLES_PAGE.ARTICLE_CARD.CARD.STATUS.ARCHIVED');\n case 'draft':\n return t('HELP_CENTER.ARTICLES_PAGE.ARTICLE_CARD.CARD.STATUS.DRAFT');\n default:\n return t('HELP_CENTER.ARTICLES_PAGE.ARTICLE_CARD.CARD.STATUS.PUBLISHED');\n }\n});\n\nconst categoryName = computed(() => {\n if (props.category?.slug) {\n return `${props.category.icon} ${props.category.name}`;\n }\n return t(\n 'HELP_CENTER.ARTICLES_PAGE.ARTICLE_CARD.CARD.CATEGORY.UNCATEGORISED'\n );\n});\n\nconst authorName = computed(() => {\n return props.author?.name || props.author?.availableName || '';\n});\n\nconst authorThumbnailSrc = computed(() => {\n return props.author?.thumbnail;\n});\n\nconst lastUpdatedAt = computed(() => {\n return dynamicTime(props.updatedAt);\n});\n\nconst handleArticleAction = ({ action, value }) => {\n toggleDropdown(false);\n emit('articleAction', { action, value, id: props.id });\n};\n\nconst handleClick = id => {\n emit('openArticle', id);\n};\n</script>\n\n<template>\n <CardLayout>\n <div class=\"flex justify-between w-full gap-1\">\n <span\n class=\"text-base cursor-pointer hover:underline underline-offset-2 hover:text-n-blue-text text-n-slate-12 line-clamp-1\"\n @click=\"handleClick(id)\"\n >\n {{ title }}\n </span>\n <div class=\"flex items-center gap-2\">\n <span\n class=\"text-xs font-medium inline-flex items-center h-6 px-2 py-0.5 rounded-md bg-n-alpha-2\"\n :class=\"statusTextColor\"\n >\n {{ statusText }}\n </span>\n <div\n v-on-clickaway=\"() => toggleDropdown(false)\"\n class=\"relative flex items-center group\"\n >\n <Button\n icon=\"i-lucide-ellipsis-vertical\"\n color=\"slate\"\n size=\"xs\"\n class=\"rounded-md group-hover:bg-n-alpha-2\"\n @click=\"toggleDropdown()\"\n />\n <DropdownMenu\n v-if=\"showActionsDropdown\"\n :menu-items=\"articleMenuItems\"\n class=\"mt-1 ltr:right-0 rtl:left-0 xl:ltr:left-0 xl:rtl:right-0 top-full\"\n @action=\"handleArticleAction($event)\"\n />\n </div>\n </div>\n </div>\n <div class=\"flex items-center justify-between w-full gap-4\">\n <div class=\"flex items-center gap-4\">\n <div class=\"flex items-center gap-1\">\n <Avatar\n :name=\"authorName\"\n :src=\"authorThumbnailSrc\"\n :size=\"16\"\n rounded-full\n />\n <span class=\"text-sm truncate text-n-slate-11\">\n {{ authorName || '-' }}\n </span>\n </div>\n <span class=\"block text-sm whitespace-nowrap text-n-slate-11\">\n {{ categoryName }}\n </span>\n <div\n class=\"inline-flex items-center gap-1 text-n-slate-11 whitespace-nowrap\"\n >\n <Icon icon=\"i-lucide-eye\" class=\"size-4\" />\n <span class=\"text-sm\">\n {{\n t('HELP_CENTER.ARTICLES_PAGE.ARTICLE_CARD.CARD.VIEWS', {\n count: views,\n })\n }}\n </span>\n </div>\n </div>\n <span class=\"text-sm text-n-slate-11 line-clamp-1\">\n {{ lastUpdatedAt }}\n </span>\n </div>\n </CardLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/CategoryCard/CategoryCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/CategoryCard/CategoryCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Article/ArticleEmptyState.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Article/ArticleEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Category/CategoryEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Category/categoryEmptyStateContent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Portal/PortalEmptyState.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Portal/PortalEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/EmptyState/Portal/portalEmptyStateContent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/HelpCenterLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/LocaleCard/LocaleCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/LocaleCard/LocaleCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'item.label' dynamic key is used'","line":43,"column":12,"nodeType":"CallExpression","endLine":43,"endColumn":25},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' (' is used","line":59,"column":23,"nodeType":null,"endLine":59,"endColumn":25,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1364],"text":"<i18n>\n{\n \"en\": {\n \" (\": \" (\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useToggle } from '@vueuse/core';\nimport { LOCALE_MENU_ITEMS } from 'dashboard/helper/portalHelper';\n\nimport CardLayout from 'dashboard/components-next/CardLayout.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\n\nconst props = defineProps({\n locale: {\n type: String,\n required: true,\n },\n isDefault: {\n type: Boolean,\n required: true,\n },\n localeCode: {\n type: String,\n required: true,\n },\n articleCount: {\n type: Number,\n required: true,\n },\n categoryCount: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['action']);\n\nconst { t } = useI18n();\n\nconst [showDropdownMenu, toggleDropdown] = useToggle();\n\nconst localeMenuItems = computed(() =>\n LOCALE_MENU_ITEMS.map(item => ({\n ...item,\n label: t(item.label),\n disabled: props.isDefault,\n }))\n);\n\nconst handleAction = ({ action, value }) => {\n emit('action', { action, value });\n toggleDropdown(false);\n};\n</script>\n\n<template>\n <CardLayout>\n <div class=\"flex justify-between gap-2\">\n <div class=\"flex items-center justify-start gap-2\">\n <span class=\"text-sm font-medium text-n-slate-12 line-clamp-1\">\n {{ locale }}{{$t(' (')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ')\n ' is used","line":59,"column":41,"nodeType":null,"endLine":60,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1390],"text":"<i18n>\n{\n \"en\": {\n \")\\n \": \")\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useToggle } from '@vueuse/core';\nimport { LOCALE_MENU_ITEMS } from 'dashboard/helper/portalHelper';\n\nimport CardLayout from 'dashboard/components-next/CardLayout.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\n\nconst props = defineProps({\n locale: {\n type: String,\n required: true,\n },\n isDefault: {\n type: Boolean,\n required: true,\n },\n localeCode: {\n type: String,\n required: true,\n },\n articleCount: {\n type: Number,\n required: true,\n },\n categoryCount: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['action']);\n\nconst { t } = useI18n();\n\nconst [showDropdownMenu, toggleDropdown] = useToggle();\n\nconst localeMenuItems = computed(() =>\n LOCALE_MENU_ITEMS.map(item => ({\n ...item,\n label: t(item.label),\n disabled: props.isDefault,\n }))\n);\n\nconst handleAction = ({ action, value }) => {\n emit('action', { action, value });\n toggleDropdown(false);\n};\n</script>\n\n<template>\n <CardLayout>\n <div class=\"flex justify-between gap-2\">\n <div class=\"flex items-center justify-start gap-2\">\n <span class=\"text-sm font-medium text-n-slate-12 line-clamp-1\">\n {{ locale }} ({{ localeCode }}{{$t(`)\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useToggle } from '@vueuse/core';\nimport { LOCALE_MENU_ITEMS } from 'dashboard/helper/portalHelper';\n\nimport CardLayout from 'dashboard/components-next/CardLayout.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\n\nconst props = defineProps({\n locale: {\n type: String,\n required: true,\n },\n isDefault: {\n type: Boolean,\n required: true,\n },\n localeCode: {\n type: String,\n required: true,\n },\n articleCount: {\n type: Number,\n required: true,\n },\n categoryCount: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['action']);\n\nconst { t } = useI18n();\n\nconst [showDropdownMenu, toggleDropdown] = useToggle();\n\nconst localeMenuItems = computed(() =>\n LOCALE_MENU_ITEMS.map(item => ({\n ...item,\n label: t(item.label),\n disabled: props.isDefault,\n }))\n);\n\nconst handleAction = ({ action, value }) => {\n emit('action', { action, value });\n toggleDropdown(false);\n};\n</script>\n\n<template>\n <CardLayout>\n <div class=\"flex justify-between gap-2\">\n <div class=\"flex items-center justify-start gap-2\">\n <span class=\"text-sm font-medium text-n-slate-12 line-clamp-1\">\n {{ locale }} ({{ localeCode }})\n </span>\n <span\n v-if=\"isDefault\"\n class=\"bg-n-alpha-2 h-6 inline-flex items-center justify-center rounded-md text-xs border-px border-transparent text-n-blue-text px-2 py-0.5\"\n >\n {{ $t('HELP_CENTER.LOCALES_PAGE.LOCALE_CARD.DEFAULT') }}\n </span>\n </div>\n <div class=\"flex items-center justify-end gap-4\">\n <div class=\"flex items-center gap-4\">\n <span class=\"text-sm text-n-slate-11 whitespace-nowrap\">\n {{\n $t(\n 'HELP_CENTER.LOCALES_PAGE.LOCALE_CARD.ARTICLES_COUNT',\n articleCount\n )\n }}\n </span>\n <div class=\"w-px h-3 bg-n-weak\" />\n <span class=\"text-sm text-n-slate-11 whitespace-nowrap\">\n {{\n $t(\n 'HELP_CENTER.LOCALES_PAGE.LOCALE_CARD.CATEGORIES_COUNT',\n categoryCount\n )\n }}\n </span>\n </div>\n <div\n v-on-clickaway=\"() => toggleDropdown(false)\"\n class=\"relative group\"\n >\n <Button\n icon=\"i-lucide-ellipsis-vertical\"\n color=\"slate\"\n size=\"xs\"\n class=\"rounded-md group-hover:bg-n-alpha-2\"\n @click=\"toggleDropdown()\"\n />\n\n <DropdownMenu\n v-if=\"showDropdownMenu\"\n :menu-items=\"localeMenuItems\"\n class=\"ltr:right-0 rtl:left-0 mt-1 xl:ltr:left-0 xl:rtl:right-0 top-full z-60 min-w-[150px]\"\n @action=\"handleAction\"\n />\n </div>\n </div>\n </div>\n </CardLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticleEditorPage/ArticleEditor.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticleEditorPage/ArticleEditorControls.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticleEditorPage/ArticleEditorHeader.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'label' dynamic key is used'","line":57,"column":14,"nodeType":"CallExpression","endLine":57,"endColumn":22},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.EDIT_ARTICLE_PAGE.HEADER.STATUS.${props.isUpdating?'SAVING':'SAVED'}`' dynamic key is used'","line":66,"column":3,"nodeType":"CallExpression","endLine":68,"endColumn":4},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.${statusMap[status]}.API.${messageType}`' dynamic key is used'","line":84,"column":7,"nodeType":"CallExpression","endLine":84,"endColumn":63}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport { useStore } from 'dashboard/composables/store.js';\nimport { useAlert, useTrack } from 'dashboard/composables';\nimport { PORTALS_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';\nimport { OnClickOutside } from '@vueuse/components';\nimport { getArticleStatus } from 'dashboard/helper/portalHelper.js';\nimport {\n ARTICLE_EDITOR_STATUS_OPTIONS,\n ARTICLE_STATUSES,\n ARTICLE_MENU_ITEMS,\n} from 'dashboard/helper/portalHelper';\nimport wootConstants from 'dashboard/constants/globals';\n\nimport ButtonGroup from 'dashboard/components-next/buttonGroup/ButtonGroup.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\n\nconst props = defineProps({\n isUpdating: {\n type: Boolean,\n default: false,\n },\n isSaved: {\n type: Boolean,\n default: false,\n },\n status: {\n type: String,\n default: '',\n },\n articleId: {\n type: Number,\n default: 0,\n },\n});\n\nconst emit = defineEmits(['goBack', 'previewArticle']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst route = useRoute();\n\nconst isArticlePublishing = ref(false);\n\nconst { ARTICLE_STATUS_TYPES } = wootConstants;\n\nconst showArticleActionMenu = ref(false);\n\nconst articleMenuItems = computed(() => {\n const statusOptions = ARTICLE_EDITOR_STATUS_OPTIONS[props.status] ?? [];\n return statusOptions.map(option => {\n const { label, value, icon } = ARTICLE_MENU_ITEMS[option];\n return {\n label: t(label),\n value,\n action: 'update-status',\n icon,\n };\n });\n});\n\nconst statusText = computed(() =>\n t(\n `HELP_CENTER.EDIT_ARTICLE_PAGE.HEADER.STATUS.${props.isUpdating ? 'SAVING' : 'SAVED'}`\n )\n);\n\nconst onClickGoBack = () => emit('goBack');\n\nconst previewArticle = () => emit('previewArticle');\n\nconst getStatusMessage = (status, isSuccess) => {\n const messageType = isSuccess ? 'SUCCESS' : 'ERROR';\n const statusMap = {\n [ARTICLE_STATUS_TYPES.PUBLISH]: 'PUBLISH_ARTICLE',\n [ARTICLE_STATUS_TYPES.ARCHIVE]: 'ARCHIVE_ARTICLE',\n [ARTICLE_STATUS_TYPES.DRAFT]: 'DRAFT_ARTICLE',\n };\n\n return statusMap[status]\n ? t(`HELP_CENTER.${statusMap[status]}.API.${messageType}`)\n : '';\n};\n\nconst updateArticleStatus = async ({ value }) => {\n showArticleActionMenu.value = false;\n const status = getArticleStatus(value);\n if (status === ARTICLE_STATUS_TYPES.PUBLISH) {\n isArticlePublishing.value = true;\n }\n const { portalSlug } = route.params;\n\n try {\n await store.dispatch('articles/update', {\n portalSlug,\n articleId: props.articleId,\n status,\n });\n\n useAlert(getStatusMessage(status, true));\n\n if (status === ARTICLE_STATUS_TYPES.ARCHIVE) {\n useTrack(PORTALS_EVENTS.ARCHIVE_ARTICLE, { uiFrom: 'header' });\n } else if (status === ARTICLE_STATUS_TYPES.PUBLISH) {\n useTrack(PORTALS_EVENTS.PUBLISH_ARTICLE);\n }\n isArticlePublishing.value = false;\n } catch (error) {\n useAlert(error?.message ?? getStatusMessage(status, false));\n isArticlePublishing.value = false;\n }\n};\n</script>\n\n<template>\n <div class=\"flex items-center justify-between h-20\">\n <Button\n :label=\"t('HELP_CENTER.EDIT_ARTICLE_PAGE.HEADER.BACK_TO_ARTICLES')\"\n icon=\"i-lucide-chevron-left\"\n variant=\"link\"\n color=\"slate\"\n size=\"sm\"\n class=\"ltr:pl-3 rtl:pr-3\"\n @click=\"onClickGoBack\"\n />\n <div class=\"flex items-center gap-4\">\n <span\n v-if=\"isUpdating || isSaved\"\n class=\"text-xs font-medium transition-all duration-300 text-n-slate-11\"\n >\n {{ statusText }}\n </span>\n <div class=\"flex items-center gap-2\">\n <Button\n :label=\"t('HELP_CENTER.EDIT_ARTICLE_PAGE.HEADER.PREVIEW')\"\n color=\"slate\"\n size=\"sm\"\n :disabled=\"!articleId\"\n @click=\"previewArticle\"\n />\n <ButtonGroup class=\"flex items-center\">\n <Button\n :label=\"t('HELP_CENTER.EDIT_ARTICLE_PAGE.HEADER.PUBLISH')\"\n size=\"sm\"\n class=\"ltr:rounded-r-none rtl:rounded-l-none\"\n no-animation\n :is-loading=\"isArticlePublishing\"\n :disabled=\"\n status === ARTICLE_STATUSES.PUBLISHED ||\n !articleId ||\n isArticlePublishing\n \"\n @click=\"updateArticleStatus({ value: ARTICLE_STATUSES.PUBLISHED })\"\n />\n <div class=\"relative\">\n <OnClickOutside @trigger=\"showArticleActionMenu = false\">\n <Button\n icon=\"i-lucide-chevron-down\"\n size=\"sm\"\n :disabled=\"!articleId\"\n no-animation\n class=\"ltr:rounded-l-none rtl:rounded-r-none\"\n @click.stop=\"showArticleActionMenu = !showArticleActionMenu\"\n />\n <DropdownMenu\n v-if=\"showArticleActionMenu\"\n :menu-items=\"articleMenuItems\"\n class=\"mt-2 ltr:right-0 rtl:left-0 top-full\"\n @action=\"updateArticleStatus($event)\"\n />\n </OnClickOutside>\n </div>\n </ButtonGroup>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticleEditorPage/ArticleEditorProperties.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticlePage/ArticleHeaderControls.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.ARTICLES_PAGE.ARTICLES_HEADER.TABS.${tab.key}`' dynamic key is used'","line":55,"column":12,"nodeType":"CallExpression","endLine":55,"endColumn":74}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport { OnClickOutside } from '@vueuse/components';\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport {\n ARTICLE_TABS,\n CATEGORY_ALL,\n ARTICLE_TABS_OPTIONS,\n} from 'dashboard/helper/portalHelper';\n\nimport TabBar from 'dashboard/components-next/tabbar/TabBar.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\n\nconst props = defineProps({\n categories: {\n type: Array,\n required: true,\n },\n allowedLocales: {\n type: Array,\n required: true,\n },\n meta: {\n type: Object,\n required: true,\n },\n});\n\nconst emit = defineEmits([\n 'tabChange',\n 'localeChange',\n 'categoryChange',\n 'newArticle',\n]);\n\nconst route = useRoute();\nconst { t } = useI18n();\nconst { updateUISettings } = useUISettings();\n\nconst isCategoryMenuOpen = ref(false);\nconst isLocaleMenuOpen = ref(false);\n\nconst countKey = tab => {\n if (tab.value === 'all') {\n return 'articlesCount';\n }\n return `${tab.value}ArticlesCount`;\n};\n\nconst tabs = computed(() => {\n return ARTICLE_TABS_OPTIONS.map(tab => ({\n label: t(`HELP_CENTER.ARTICLES_PAGE.ARTICLES_HEADER.TABS.${tab.key}`),\n value: tab.value,\n count: props.meta[countKey(tab)],\n }));\n});\n\nconst activeTabIndex = computed(() => {\n const tabParam = route.params.tab || ARTICLE_TABS.ALL;\n return tabs.value.findIndex(tab => tab.value === tabParam);\n});\n\nconst activeCategoryName = computed(() => {\n const activeCategory = props.categories.find(\n category => category.slug === route.params.categorySlug\n );\n\n if (activeCategory) {\n const { icon, name } = activeCategory;\n return `${icon} ${name}`;\n }\n\n return t('HELP_CENTER.ARTICLES_PAGE.ARTICLES_HEADER.CATEGORY.ALL');\n});\n\nconst activeLocaleName = computed(() => {\n return props.allowedLocales.find(\n locale => locale.code === route.params.locale\n )?.name;\n});\n\nconst categoryMenuItems = computed(() => {\n const defaultMenuItem = {\n label: t('HELP_CENTER.ARTICLES_PAGE.ARTICLES_HEADER.CATEGORY.ALL'),\n value: CATEGORY_ALL,\n action: 'filter',\n };\n\n const categoryItems = props.categories.map(category => ({\n label: category.name,\n value: category.slug,\n action: 'filter',\n emoji: category.icon,\n }));\n\n const hasCategorySlug = !!route.params.categorySlug;\n\n return hasCategorySlug ? [defaultMenuItem, ...categoryItems] : categoryItems;\n});\n\nconst hasCategoryMenuItems = computed(() => {\n return categoryMenuItems.value?.length > 0;\n});\n\nconst localeMenuItems = computed(() => {\n return props.allowedLocales.map(locale => ({\n label: locale.name,\n value: locale.code,\n action: 'filter',\n }));\n});\n\nconst handleLocaleAction = ({ value }) => {\n emit('localeChange', value);\n isLocaleMenuOpen.value = false;\n updateUISettings({\n last_active_locale_code: value,\n });\n};\n\nconst handleCategoryAction = ({ value }) => {\n emit('categoryChange', value);\n isCategoryMenuOpen.value = false;\n};\n\nconst handleNewArticle = () => {\n emit('newArticle');\n};\n\nconst handleTabChange = value => {\n emit('tabChange', value);\n};\n</script>\n\n<template>\n <div class=\"flex flex-col items-start w-full gap-2 lg:flex-row\">\n <TabBar\n :tabs=\"tabs\"\n :initial-active-tab=\"activeTabIndex\"\n @tab-changed=\"handleTabChange\"\n />\n <div class=\"flex items-start justify-between w-full gap-2\">\n <div class=\"flex items-center gap-2\">\n <div class=\"relative group\">\n <OnClickOutside @trigger=\"isLocaleMenuOpen = false\">\n <Button\n :label=\"activeLocaleName\"\n size=\"sm\"\n icon=\"i-lucide-chevron-down\"\n color=\"slate\"\n trailing-icon\n @click=\"isLocaleMenuOpen = !isLocaleMenuOpen\"\n />\n\n <DropdownMenu\n v-if=\"isLocaleMenuOpen\"\n :menu-items=\"localeMenuItems\"\n show-search\n class=\"left-0 w-40 max-w-[300px] mt-2 overflow-y-auto xl:right-0 top-full max-h-60\"\n @action=\"handleLocaleAction\"\n />\n </OnClickOutside>\n </div>\n <div v-if=\"hasCategoryMenuItems\" class=\"relative group\">\n <OnClickOutside @trigger=\"isCategoryMenuOpen = false\">\n <Button\n :label=\"activeCategoryName\"\n icon=\"i-lucide-chevron-down\"\n size=\"sm\"\n color=\"slate\"\n trailing-icon\n class=\"max-w-48\"\n @click=\"isCategoryMenuOpen = !isCategoryMenuOpen\"\n />\n\n <DropdownMenu\n v-if=\"isCategoryMenuOpen\"\n :menu-items=\"categoryMenuItems\"\n show-search\n class=\"left-0 w-48 mt-2 overflow-y-auto xl:right-0 top-full max-h-60\"\n @action=\"handleCategoryAction\"\n />\n </OnClickOutside>\n </div>\n </div>\n <Button\n :label=\"t('HELP_CENTER.ARTICLES_PAGE.ARTICLES_HEADER.NEW_ARTICLE')\"\n icon=\"i-lucide-plus\"\n size=\"sm\"\n @click=\"handleNewArticle\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticlePage/ArticleList.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.${statusMap[status]}.API.${messageType}`' dynamic key is used'","line":98,"column":7,"nodeType":"CallExpression","endLine":98,"endColumn":63}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, watch } from 'vue';\nimport Draggable from 'vuedraggable';\nimport { useMapGetter, useStore } from 'dashboard/composables/store.js';\nimport { useRouter, useRoute } from 'vue-router';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert, useTrack } from 'dashboard/composables';\nimport { PORTALS_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';\nimport { getArticleStatus } from 'dashboard/helper/portalHelper.js';\nimport wootConstants from 'dashboard/constants/globals';\n\nimport ArticleCard from 'dashboard/components-next/HelpCenter/ArticleCard/ArticleCard.vue';\n\nconst props = defineProps({\n articles: {\n type: Array,\n required: true,\n },\n isCategoryArticles: {\n type: Boolean,\n default: false,\n },\n});\n\nconst { ARTICLE_STATUS_TYPES } = wootConstants;\n\nconst router = useRouter();\nconst route = useRoute();\nconst store = useStore();\nconst { t } = useI18n();\n\nconst localArticles = ref(props.articles);\n\nconst dragEnabled = computed(() => {\n // Enable dragging only for category articles and when there's more than one article\n return props.isCategoryArticles && localArticles.value?.length > 1;\n});\n\nconst getCategoryById = useMapGetter('categories/categoryById');\n\nconst openArticle = id => {\n const { tab, categorySlug, locale } = route.params;\n if (props.isCategoryArticles) {\n router.push({\n name: 'portals_categories_articles_edit',\n params: { articleSlug: id },\n });\n } else {\n router.push({\n name: 'portals_articles_edit',\n params: {\n articleSlug: id,\n tab,\n categorySlug,\n locale,\n },\n });\n }\n};\n\nconst onReorder = reorderedGroup => {\n store.dispatch('articles/reorder', {\n reorderedGroup,\n portalSlug: route.params.portalSlug,\n });\n};\n\nconst onDragEnd = () => {\n // Reuse existing positions to maintain order within the current group\n const sortedArticlePositions = localArticles.value\n .map(article => article.position)\n .sort((a, b) => a - b); // Use custom sort to handle numeric values correctly\n\n const orderedArticles = localArticles.value.map(article => article.id);\n\n // Create a map of article IDs to their new positions\n const reorderedGroup = orderedArticles.reduce((obj, key, index) => {\n obj[key] = sortedArticlePositions[index];\n return obj;\n }, {});\n\n onReorder(reorderedGroup);\n};\n\nconst getCategory = categoryId => {\n return getCategoryById.value(categoryId) || { name: '', icon: '' };\n};\n\nconst getStatusMessage = (status, isSuccess) => {\n const messageType = isSuccess ? 'SUCCESS' : 'ERROR';\n const statusMap = {\n [ARTICLE_STATUS_TYPES.PUBLISH]: 'PUBLISH_ARTICLE',\n [ARTICLE_STATUS_TYPES.ARCHIVE]: 'ARCHIVE_ARTICLE',\n [ARTICLE_STATUS_TYPES.DRAFT]: 'DRAFT_ARTICLE',\n };\n\n return statusMap[status]\n ? t(`HELP_CENTER.${statusMap[status]}.API.${messageType}`)\n : '';\n};\n\nconst updatePortalMeta = () => {\n const { portalSlug, locale } = route.params;\n return store.dispatch('portals/show', { portalSlug, locale });\n};\n\nconst updateArticlesMeta = () => {\n const { portalSlug, locale } = route.params;\n return store.dispatch('articles/updateArticleMeta', {\n portalSlug,\n locale,\n });\n};\n\nconst handleArticleAction = async (action, { status, id }) => {\n const { portalSlug } = route.params;\n try {\n if (action === 'delete') {\n await store.dispatch('articles/delete', {\n portalSlug,\n articleId: id,\n });\n useAlert(t('HELP_CENTER.DELETE_ARTICLE.API.SUCCESS_MESSAGE'));\n } else {\n await store.dispatch('articles/update', {\n portalSlug,\n articleId: id,\n status,\n });\n useAlert(getStatusMessage(status, true));\n\n if (status === ARTICLE_STATUS_TYPES.ARCHIVE) {\n useTrack(PORTALS_EVENTS.ARCHIVE_ARTICLE, { uiFrom: 'header' });\n } else if (status === ARTICLE_STATUS_TYPES.PUBLISH) {\n useTrack(PORTALS_EVENTS.PUBLISH_ARTICLE);\n }\n }\n await updateArticlesMeta();\n await updatePortalMeta();\n } catch (error) {\n const errorMessage =\n error?.message ||\n (action === 'delete'\n ? t('HELP_CENTER.DELETE_ARTICLE.API.ERROR_MESSAGE')\n : getStatusMessage(status, false));\n useAlert(errorMessage);\n }\n};\n\nconst updateArticle = ({ action, value, id }) => {\n const status = action !== 'delete' ? getArticleStatus(value) : null;\n handleArticleAction(action, { status, id });\n};\n\n// Watch for changes in the articles prop and update the localArticles ref\nwatch(\n () => props.articles,\n newArticles => {\n localArticles.value = newArticles;\n },\n { deep: true }\n);\n</script>\n\n<template>\n <Draggable\n v-model=\"localArticles\"\n :disabled=\"!dragEnabled\"\n item-key=\"id\"\n tag=\"ul\"\n ghost-class=\"article-ghost-class\"\n class=\"w-full h-full space-y-4\"\n @end=\"onDragEnd\"\n >\n <template #item=\"{ element }\">\n <li class=\"list-none rounded-2xl\">\n <ArticleCard\n :id=\"element.id\"\n :key=\"element.id\"\n :title=\"element.title\"\n :status=\"element.status\"\n :author=\"element.author\"\n :category=\"getCategory(element.category.id)\"\n :views=\"element.views || 0\"\n :updated-at=\"element.updatedAt\"\n :class=\"{ 'cursor-grab': dragEnabled }\"\n @open-article=\"openArticle\"\n @article-action=\"updateArticle\"\n />\n </li>\n </template>\n </Draggable>\n</template>\n\n<style lang=\"scss\" scoped>\n.article-ghost-class {\n @apply opacity-50 bg-n-solid-1;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticlePage/ArticlesPage.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticlePage/ArticlesPage.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.ARTICLES_PAGE.EMPTY_STATE.CATEGORY.${type}`' dynamic key is used'","line":103,"column":12,"nodeType":"CallExpression","endLine":103,"endColumn":71},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.ARTICLES_PAGE.EMPTY_STATE.${tabName}.${type}`' dynamic key is used'","line":106,"column":10,"nodeType":"CallExpression","endLine":106,"endColumn":71}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useRouter, useRoute } from 'vue-router';\nimport { useI18n } from 'vue-i18n';\nimport { useMapGetter } from 'dashboard/composables/store.js';\nimport { ARTICLE_TABS, CATEGORY_ALL } from 'dashboard/helper/portalHelper';\n\nimport HelpCenterLayout from 'dashboard/components-next/HelpCenter/HelpCenterLayout.vue';\nimport ArticleList from 'dashboard/components-next/HelpCenter/Pages/ArticlePage/ArticleList.vue';\nimport ArticleHeaderControls from 'dashboard/components-next/HelpCenter/Pages/ArticlePage/ArticleHeaderControls.vue';\nimport CategoryHeaderControls from 'dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoryHeaderControls.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\nimport ArticleEmptyState from 'dashboard/components-next/HelpCenter/EmptyState/Article/ArticleEmptyState.vue';\n\nconst props = defineProps({\n articles: {\n type: Array,\n required: true,\n },\n categories: {\n type: Array,\n required: true,\n },\n allowedLocales: {\n type: Array,\n required: true,\n },\n portalName: {\n type: String,\n required: true,\n },\n meta: {\n type: Object,\n required: true,\n },\n isCategoryArticles: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits(['pageChange', 'fetchPortal']);\n\nconst router = useRouter();\nconst route = useRoute();\nconst { t } = useI18n();\n\nconst isSwitchingPortal = useMapGetter('portals/isSwitchingPortal');\nconst isFetching = useMapGetter('articles/isFetching');\n\nconst hasNoArticles = computed(\n () => !isFetching.value && !props.articles.length\n);\n\nconst isLoading = computed(() => isFetching.value || isSwitchingPortal.value);\n\nconst totalArticlesCount = computed(() => props.meta.allArticlesCount);\n\nconst hasNoArticlesInPortal = computed(\n () => totalArticlesCount.value === 0 && !props.isCategoryArticles\n);\n\nconst shouldShowPaginationFooter = computed(() => {\n return !(isFetching.value || isSwitchingPortal.value || hasNoArticles.value);\n});\n\nconst updateRoute = newParams => {\n const { portalSlug, locale, tab, categorySlug } = route.params;\n router.push({\n name: 'portals_articles_index',\n params: {\n portalSlug,\n locale: newParams.locale ?? locale,\n tab: newParams.tab ?? tab,\n categorySlug: newParams.categorySlug ?? categorySlug,\n ...newParams,\n },\n });\n};\n\nconst articlesCount = computed(() => {\n const { tab } = route.params;\n const { meta } = props;\n const countMap = {\n '': meta.articlesCount,\n mine: meta.mineArticlesCount,\n draft: meta.draftArticlesCount,\n archived: meta.archivedArticlesCount,\n };\n return Number(countMap[tab] || countMap['']);\n});\n\nconst showArticleHeaderControls = computed(\n () => !props.isCategoryArticles && !isSwitchingPortal.value\n);\n\nconst showCategoryHeaderControls = computed(\n () => props.isCategoryArticles && !isSwitchingPortal.value\n);\n\nconst getEmptyStateText = type => {\n if (props.isCategoryArticles) {\n return t(`HELP_CENTER.ARTICLES_PAGE.EMPTY_STATE.CATEGORY.${type}`);\n }\n const tabName = route.params.tab?.toUpperCase() || 'ALL';\n return t(`HELP_CENTER.ARTICLES_PAGE.EMPTY_STATE.${tabName}.${type}`);\n};\n\nconst getEmptyStateTitle = computed(() => getEmptyStateText('TITLE'));\nconst getEmptyStateSubtitle = computed(() => getEmptyStateText('SUBTITLE'));\n\nconst handleTabChange = tab =>\n updateRoute({ tab: tab.value === ARTICLE_TABS.ALL ? '' : tab.value });\n\nconst handleCategoryAction = value =>\n updateRoute({ categorySlug: value === CATEGORY_ALL ? '' : value });\n\nconst handleLocaleAction = value => {\n updateRoute({ locale: value, categorySlug: '' });\n emit('fetchPortal', value);\n};\nconst handlePageChange = page => emit('pageChange', page);\n\nconst navigateToNewArticlePage = () => {\n const { categorySlug, locale } = route.params;\n router.push({\n name: 'portals_articles_new',\n params: { categorySlug, locale },\n });\n};\n</script>\n\n<template>\n <HelpCenterLayout\n :current-page=\"Number(meta.currentPage)\"\n :total-items=\"articlesCount\"\n :items-per-page=\"25\"\n :header=\"portalName\"\n :show-pagination-footer=\"shouldShowPaginationFooter\"\n @update:current-page=\"handlePageChange\"\n >\n <template #header-actions>\n <div class=\"flex items-end justify-between\">\n <ArticleHeaderControls\n v-if=\"showArticleHeaderControls\"\n :categories=\"categories\"\n :allowed-locales=\"allowedLocales\"\n :meta=\"meta\"\n @tab-change=\"handleTabChange\"\n @locale-change=\"handleLocaleAction\"\n @category-change=\"handleCategoryAction\"\n @new-article=\"navigateToNewArticlePage\"\n />\n <CategoryHeaderControls\n v-else-if=\"showCategoryHeaderControls\"\n :categories=\"categories\"\n :allowed-locales=\"allowedLocales\"\n :has-selected-category=\"isCategoryArticles\"\n />\n </div>\n </template>\n <template #content>\n <div\n v-if=\"isLoading\"\n class=\"flex items-center justify-center py-10 text-n-slate-11\"\n >\n <Spinner />\n </div>\n <ArticleList\n v-else-if=\"!hasNoArticles\"\n :articles=\"articles\"\n :is-category-articles=\"isCategoryArticles\"\n />\n <ArticleEmptyState\n v-else\n class=\"pt-14\"\n :title=\"getEmptyStateTitle\"\n :subtitle=\"getEmptyStateSubtitle\"\n :show-button=\"hasNoArticlesInPortal\"\n :button-label=\"\n t('HELP_CENTER.ARTICLES_PAGE.EMPTY_STATE.ALL.BUTTON_LABEL')\n \"\n @click=\"navigateToNewArticlePage\"\n />\n </template>\n </HelpCenterLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoriesPage.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoriesPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoryDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.${props.mode.toUpperCase()}.API.SUCCESS_MESSAGE`' dynamic key is used'","line":63,"column":28,"nodeType":"CallExpression","endLine":65,"endColumn":6},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.${props.mode.toUpperCase()}.API.ERROR_MESSAGE`' dynamic key is used'","line":83,"column":7,"nodeType":"CallExpression","endLine":85,"endColumn":8},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.HEADER.${mode.toUpperCase()}`' dynamic key is used'","line":97,"column":9,"nodeType":"CallExpression","endLine":99,"endColumn":10}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert, useTrack } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport { PORTALS_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';\n\nimport CategoryForm from 'dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoryForm.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n default: 'edit',\n validator: value => ['edit', 'create'].includes(value),\n },\n selectedCategory: {\n type: Object,\n default: () => ({}),\n },\n portalName: {\n type: String,\n default: '',\n },\n activeLocaleName: {\n type: String,\n default: '',\n },\n activeLocaleCode: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['close']);\n\nconst store = useStore();\nconst { t } = useI18n();\nconst route = useRoute();\n\nconst handleCategory = async formData => {\n const { id, name, slug, icon, description, locale } = formData;\n const categoryData = { name, icon, slug, description };\n\n if (props.mode === 'create') {\n categoryData.locale = locale;\n } else {\n categoryData.id = id;\n }\n\n try {\n const action = props.mode === 'edit' ? 'update' : 'create';\n const payload = {\n portalSlug: route.params.portalSlug,\n categoryObj: categoryData,\n };\n\n if (action === 'update') {\n payload.categoryId = id;\n }\n\n await store.dispatch(`categories/${action}`, payload);\n\n const successMessage = t(\n `HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.${props.mode.toUpperCase()}.API.SUCCESS_MESSAGE`\n );\n useAlert(successMessage);\n\n const trackEvent =\n props.mode === 'edit'\n ? PORTALS_EVENTS.EDIT_CATEGORY\n : PORTALS_EVENTS.CREATE_CATEGORY;\n useTrack(\n trackEvent,\n props.mode === 'create'\n ? { hasDescription: Boolean(description) }\n : undefined\n );\n\n emit('close');\n } catch (error) {\n const errorMessage =\n error?.message ||\n t(\n `HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.${props.mode.toUpperCase()}.API.ERROR_MESSAGE`\n );\n useAlert(errorMessage);\n }\n};\n</script>\n\n<template>\n <div\n class=\"w-[25rem] absolute top-10 ltr:right-0 rtl:left-0 bg-n-alpha-3 backdrop-blur-[100px] p-6 rounded-xl border border-n-weak shadow-md flex flex-col gap-6\"\n >\n <h3 class=\"text-base font-medium text-n-slate-12\">\n {{\n t(\n `HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.HEADER.${mode.toUpperCase()}`\n )\n }}\n </h3>\n <CategoryForm\n :mode=\"mode\"\n :selected-category=\"selectedCategory\"\n :active-locale-code=\"activeLocaleCode\"\n :portal-name=\"portalName\"\n :active-locale-name=\"activeLocaleName\"\n @submit=\"handleCategory\"\n @cancel=\"emit('close')\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoryForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.BUTTONS.${mode.toUpperCase()}`' dynamic key is used'","line":254,"column":13,"nodeType":"CallExpression","endLine":256,"endColumn":14}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport {\n reactive,\n ref,\n watch,\n computed,\n defineAsyncComponent,\n onMounted,\n} from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { OnClickOutside } from '@vueuse/components';\nimport { useStoreGetters, useMapGetter } from 'dashboard/composables/store';\nimport { useRoute } from 'vue-router';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { convertToCategorySlug } from 'dashboard/helper/commons.js';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport TextArea from 'dashboard/components-next/textarea/TextArea.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n required: true,\n validator: value => ['edit', 'create'].includes(value),\n },\n selectedCategory: {\n type: Object,\n default: () => ({}),\n },\n activeLocaleCode: {\n type: String,\n default: '',\n },\n showActionButtons: {\n type: Boolean,\n default: true,\n },\n portalName: {\n type: String,\n default: '',\n },\n activeLocaleName: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst EmojiInput = defineAsyncComponent(\n () => import('shared/components/emoji/EmojiInput.vue')\n);\n\nconst { t } = useI18n();\nconst route = useRoute();\nconst getters = useStoreGetters();\n\nconst isCreating = useMapGetter('categories/isCreating');\n\nconst isUpdatingCategory = computed(() => {\n const id = props.selectedCategory?.id;\n if (id) return getters['categories/uiFlags'].value(id)?.isUpdating;\n\n return false;\n});\n\nconst isEmojiPickerOpen = ref(false);\n\nconst state = reactive({\n id: '',\n name: '',\n icon: '',\n slug: '',\n description: '',\n locale: '',\n});\n\nconst isEditMode = computed(() => props.mode === 'edit');\n\nconst rules = {\n name: { required, minLength: minLength(1) },\n slug: { required },\n};\n\nconst v$ = useVuelidate(rules, state);\n\nconst isSubmitDisabled = computed(() => v$.value.$invalid);\n\nconst nameError = computed(() =>\n v$.value.name.$error\n ? t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.NAME.ERROR')\n : ''\n);\n\nconst slugError = computed(() =>\n v$.value.slug.$error\n ? t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.SLUG.ERROR')\n : ''\n);\n\nconst slugHelpText = computed(() => {\n const { portalSlug, locale } = route.params;\n return t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.SLUG.HELP_TEXT', {\n portalSlug,\n localeCode: locale,\n categorySlug: state.slug,\n });\n});\n\nconst onClickInsertEmoji = emoji => {\n state.icon = emoji;\n isEmojiPickerOpen.value = false;\n};\n\nconst handleSubmit = async () => {\n const isFormCorrect = await v$.value.$validate();\n if (!isFormCorrect) return;\n\n emit('submit', { ...state });\n};\n\nconst handleCancel = () => {\n emit('cancel');\n};\n\nwatch(\n () => state.name,\n () => {\n if (!isEditMode.value) {\n state.slug = convertToCategorySlug(state.name);\n }\n }\n);\n\nwatch(\n () => props.selectedCategory,\n newCategory => {\n if (props.mode === 'edit' && newCategory) {\n const { id, name, icon, slug, description } = newCategory;\n Object.assign(state, { id, name, icon, slug, description });\n }\n },\n { immediate: true }\n);\n\nonMounted(() => {\n if (props.mode === 'create') {\n state.locale = props.activeLocaleCode;\n }\n});\n\ndefineExpose({ state, isSubmitDisabled });\n</script>\n\n<template>\n <div class=\"flex flex-col gap-4\">\n <div\n class=\"flex items-center justify-start gap-8 px-4 py-2 border rounded-lg border-n-strong\"\n >\n <div class=\"flex flex-col items-start w-full gap-2 py-2\">\n <span class=\"text-sm font-medium text-n-slate-11\">\n {{ t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.HEADER.PORTAL') }}\n </span>\n <span class=\"text-sm text-n-slate-12\">\n {{ portalName }}\n </span>\n </div>\n <div class=\"justify-start w-px h-10 bg-n-strong\" />\n <div class=\"flex flex-col w-full gap-2 py-2\">\n <span class=\"text-sm font-medium text-n-slate-11\">\n {{ t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.HEADER.LOCALE') }}\n </span>\n <span\n :title=\"`${activeLocaleName} (${activeLocaleCode})`\"\n class=\"text-sm line-clamp-1 text-n-slate-12\"\n >\n {{ `${activeLocaleName} (${activeLocaleCode})` }}\n </span>\n </div>\n </div>\n <div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <Input\n v-model=\"state.name\"\n :label=\"\n t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.NAME.LABEL')\n \"\n :placeholder=\"\n t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.NAME.PLACEHOLDER')\n \"\n :message=\"nameError\"\n :message-type=\"nameError ? 'error' : 'info'\"\n custom-input-class=\"!h-10 ltr:!pl-12 rtl:!pr-12\"\n >\n <template #prefix>\n <OnClickOutside @trigger=\"isEmojiPickerOpen = false\">\n <Button\n :label=\"state.icon\"\n color=\"slate\"\n size=\"sm\"\n type=\"button\"\n :icon=\"!state.icon ? 'i-lucide-smile-plus' : ''\"\n class=\"!h-[2.4rem] !w-[2.375rem] absolute top-[1.94rem] !outline-none !rounded-[0.438rem] border-0 ltr:left-px rtl:right-px ltr:!rounded-r-none rtl:!rounded-l-none\"\n @click=\"isEmojiPickerOpen = !isEmojiPickerOpen\"\n />\n <EmojiInput\n v-if=\"isEmojiPickerOpen\"\n class=\"left-0 top-16\"\n show-remove-button\n :on-click=\"onClickInsertEmoji\"\n />\n </OnClickOutside>\n </template>\n </Input>\n </div>\n <Input\n v-model=\"state.slug\"\n :label=\"t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.SLUG.LABEL')\"\n :placeholder=\"\n t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.SLUG.PLACEHOLDER')\n \"\n :disabled=\"isEditMode\"\n :message=\"slugError ? slugError : slugHelpText\"\n :message-type=\"slugError ? 'error' : 'info'\"\n custom-input-class=\"!h-10\"\n />\n <TextArea\n v-model=\"state.description\"\n :label=\"\n t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.DESCRIPTION.LABEL')\n \"\n :placeholder=\"\n t(\n 'HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.FORM.DESCRIPTION.PLACEHOLDER'\n )\n \"\n show-character-count\n />\n <div\n v-if=\"showActionButtons\"\n class=\"flex items-center justify-between w-full gap-3\"\n >\n <Button\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.BUTTONS.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n :label=\"\n t(\n `HELP_CENTER.CATEGORY_PAGE.CATEGORY_DIALOG.BUTTONS.${mode.toUpperCase()}`\n )\n \"\n class=\"w-full\"\n :disabled=\"isSubmitDisabled || isCreating || isUpdatingCategory\"\n :is-loading=\"isCreating || isUpdatingCategory\"\n @click=\"handleSubmit\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.emoji-dialog::before {\n @apply hidden;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoryHeaderControls.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/CategoryList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/CategoryPage/EditCategoryDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/LocalePage/AddLocaleDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/LocalePage/LocaleList.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.PORTAL.${messageKey}.API.SUCCESS_MESSAGE`' dynamic key is used'","line":45,"column":20,"nodeType":"CallExpression","endLine":45,"endColumn":77},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.PORTAL.${messageKey}.API.ERROR_MESSAGE`' dynamic key is used'","line":48,"column":25,"nodeType":"CallExpression","endLine":48,"endColumn":80}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport LocaleCard from 'dashboard/components-next/HelpCenter/LocaleCard/LocaleCard.vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert, useTrack } from 'dashboard/composables';\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport { PORTALS_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';\n\nconst props = defineProps({\n locales: {\n type: Array,\n required: true,\n },\n portal: {\n type: Object,\n required: true,\n },\n});\n\nconst store = useStore();\nconst { t } = useI18n();\nconst route = useRoute();\nconst { uiSettings, updateUISettings } = useUISettings();\n\nconst isLocaleDefault = code => {\n return props.portal?.meta?.default_locale === code;\n};\n\nconst updatePortalLocales = async ({\n newAllowedLocales,\n defaultLocale,\n messageKey,\n}) => {\n let alertMessage = '';\n try {\n await store.dispatch('portals/update', {\n portalSlug: props.portal.slug,\n config: {\n default_locale: defaultLocale,\n allowed_locales: newAllowedLocales,\n },\n });\n\n alertMessage = t(`HELP_CENTER.PORTAL.${messageKey}.API.SUCCESS_MESSAGE`);\n } catch (error) {\n alertMessage =\n error?.message || t(`HELP_CENTER.PORTAL.${messageKey}.API.ERROR_MESSAGE`);\n } finally {\n useAlert(alertMessage);\n }\n};\n\nconst changeDefaultLocale = ({ localeCode }) => {\n const newAllowedLocales = props.locales.map(locale => locale.code);\n updatePortalLocales({\n newAllowedLocales,\n defaultLocale: localeCode,\n messageKey: 'CHANGE_DEFAULT_LOCALE',\n });\n useTrack(PORTALS_EVENTS.SET_DEFAULT_LOCALE, {\n newLocale: localeCode,\n from: route.name,\n });\n};\n\nconst updateLastActivePortal = async localeCode => {\n const { last_active_locale_code: lastActiveLocaleCode } =\n uiSettings.value || {};\n const defaultLocale = props.portal.meta.default_locale;\n\n // Update UI settings only if deleting locale matches the last active locale in UI settings.\n if (localeCode === lastActiveLocaleCode) {\n await updateUISettings({\n last_active_locale_code: defaultLocale,\n });\n }\n};\n\nconst deletePortalLocale = async ({ localeCode }) => {\n const updatedLocales = props.locales\n .filter(locale => locale.code !== localeCode)\n .map(locale => locale.code);\n\n const defaultLocale = props.portal.meta.default_locale;\n\n await updatePortalLocales({\n newAllowedLocales: updatedLocales,\n defaultLocale,\n messageKey: 'DELETE_LOCALE',\n });\n\n await updateLastActivePortal(localeCode);\n\n useTrack(PORTALS_EVENTS.DELETE_LOCALE, {\n deletedLocale: localeCode,\n from: route.name,\n });\n};\n\nconst handleAction = ({ action }, localeCode) => {\n if (action === 'change-default') {\n changeDefaultLocale({ localeCode: localeCode });\n } else if (action === 'delete') {\n deletePortalLocale({ localeCode: localeCode });\n }\n};\n</script>\n\n<template>\n <ul role=\"list\" class=\"w-full h-full space-y-4\">\n <LocaleCard\n v-for=\"(locale, index) in locales\"\n :key=\"index\"\n :locale=\"locale.name\"\n :is-default=\"isLocaleDefault(locale.code)\"\n :locale-code=\"locale.code\"\n :article-count=\"locale.articlesCount || 0\"\n :category-count=\"locale.categoriesCount || 0\"\n @action=\"handleAction($event, locale.code)\"\n />\n </ul>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/LocalePage/LocalesPage.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/LocalePage/LocalesPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/AddCustomDomainDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.${props.mode.toUpperCase()}_HEADER`' dynamic key is used'","line":67,"column":7,"nodeType":"CallExpression","endLine":69,"endColumn":8},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.${props.mode.toUpperCase()}_CONFIRM_BUTTON_LABEL`' dynamic key is used'","line":72,"column":7,"nodeType":"CallExpression","endLine":74,"endColumn":8}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, reactive, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { helpers } from '@vuelidate/validators';\nimport { isValidDomain } from '@chatwoot/utils';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport Input from 'dashboard/components-next/input/Input.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n default: 'add',\n },\n customDomain: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['addCustomDomain']);\n\nconst { t } = useI18n();\n\nconst dialogRef = ref(null);\n\nconst formState = reactive({\n customDomain: props.customDomain,\n});\n\nconst rules = {\n customDomain: {\n isValidDomain: helpers.withMessage(\n () =>\n t(\n 'HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.FORMAT_ERROR'\n ),\n isValidDomain\n ),\n },\n};\n\nconst v$ = useVuelidate(rules, formState);\n\nwatch(\n () => props.customDomain,\n newVal => {\n formState.customDomain = newVal;\n }\n);\n\nconst handleDialogConfirm = async () => {\n const isFormCorrect = await v$.value.$validate();\n if (!isFormCorrect) return;\n\n emit('addCustomDomain', formState.customDomain);\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <Dialog\n ref=\"dialogRef\"\n :title=\"\n t(\n `HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.${props.mode.toUpperCase()}_HEADER`\n )\n \"\n :confirm-button-label=\"\n t(\n `HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.${props.mode.toUpperCase()}_CONFIRM_BUTTON_LABEL`\n )\n \"\n @confirm=\"handleDialogConfirm\"\n >\n <Input\n v-model=\"formState.customDomain\"\n :label=\"\n t(\n 'HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.LABEL'\n )\n \"\n :placeholder=\"\n t(\n 'HELP_CENTER.PORTAL_SETTINGS.CONFIGURATION_FORM.CUSTOM_DOMAIN.DIALOG.PLACEHOLDER'\n )\n \"\n :message=\"\n v$.customDomain.$error ? v$.customDomain.$errors[0].$message : ''\n \"\n :message-type=\"v$.customDomain.$error ? 'error' : 'info'\"\n @blur=\"v$.customDomain.$touch()\"\n />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/ConfirmDeletePortalDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/DNSConfigurationDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalBaseSettings.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'errorKey' dynamic key is used'","line":190,"column":14,"nodeType":"CallExpression","endLine":190,"endColumn":61}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, watch, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { buildPortalURL } from 'dashboard/helper/portalHelper';\nimport { useAlert } from 'dashboard/composables';\nimport { useStore, useStoreGetters } from 'dashboard/composables/store';\nimport { uploadFile } from 'dashboard/helper/uploadHelper';\nimport { checkFileSizeLimit } from 'shared/helpers/FileHelper';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength, helpers, url } from '@vuelidate/validators';\nimport { isValidSlug } from 'shared/helpers/Validators';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport ColorPicker from 'dashboard/components-next/colorpicker/ColorPicker.vue';\n\nconst props = defineProps({\n activePortal: {\n type: Object,\n required: true,\n },\n isFetching: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits(['updatePortal']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst getters = useStoreGetters();\n\nconst MAXIMUM_FILE_UPLOAD_SIZE = 4; // in MB\n\nconst state = reactive({\n name: '',\n headerText: '',\n pageTitle: '',\n slug: '',\n widgetColor: '',\n homePageLink: '',\n liveChatWidgetInboxId: '',\n logoUrl: '',\n avatarBlobId: '',\n});\n\nconst originalState = reactive({ ...state });\n\nconst liveChatWidgets = computed(() => {\n const inboxes = store.getters['inboxes/getInboxes'];\n const widgetOptions = inboxes\n .filter(inbox => inbox.channel_type === 'Channel::WebWidget')\n .map(inbox => ({\n value: inbox.id,\n label: inbox.name,\n }));\n\n return [\n {\n value: '',\n label: t('HELP_CENTER.PORTAL_SETTINGS.FORM.LIVE_CHAT_WIDGET.NONE_OPTION'),\n },\n ...widgetOptions,\n ];\n});\n\nconst rules = {\n name: { required, minLength: minLength(2) },\n slug: {\n required: helpers.withMessage(\n () => t('HELP_CENTER.CREATE_PORTAL_DIALOG.SLUG.ERROR'),\n required\n ),\n isValidSlug: helpers.withMessage(\n () => t('HELP_CENTER.CREATE_PORTAL_DIALOG.SLUG.FORMAT_ERROR'),\n isValidSlug\n ),\n },\n homePageLink: { url },\n};\n\nconst v$ = useVuelidate(rules, state);\n\nconst nameError = computed(() =>\n v$.value.name.$error ? t('HELP_CENTER.CREATE_PORTAL_DIALOG.NAME.ERROR') : ''\n);\n\nconst slugError = computed(() => {\n return v$.value.slug.$errors[0]?.$message || '';\n});\n\nconst homePageLinkError = computed(() =>\n v$.value.homePageLink.$error\n ? t('HELP_CENTER.PORTAL_SETTINGS.FORM.HOME_PAGE_LINK.ERROR')\n : ''\n);\n\nconst isUpdatingPortal = computed(() => {\n const slug = props.activePortal?.slug;\n if (slug) return getters['portals/uiFlagsIn'].value(slug)?.isUpdating;\n\n return false;\n});\n\nwatch(\n () => props.activePortal,\n newVal => {\n if (newVal && !props.isFetching) {\n Object.assign(state, {\n name: newVal.name,\n headerText: newVal.header_text,\n pageTitle: newVal.page_title,\n widgetColor: newVal.color,\n homePageLink: newVal.homepage_link,\n slug: newVal.slug,\n liveChatWidgetInboxId: newVal.inbox?.id || '',\n });\n if (newVal.logo) {\n const {\n logo: { file_url: logoURL, blob_id: blobId },\n } = newVal;\n state.logoUrl = logoURL;\n state.avatarBlobId = blobId;\n } else {\n state.logoUrl = '';\n state.avatarBlobId = '';\n }\n Object.assign(originalState, state);\n }\n },\n { immediate: true, deep: true }\n);\n\nconst hasChanges = computed(() => {\n return JSON.stringify(state) !== JSON.stringify(originalState);\n});\n\nconst handleUpdatePortal = () => {\n const portal = {\n id: props.activePortal?.id,\n slug: state.slug,\n name: state.name,\n color: state.widgetColor,\n page_title: state.pageTitle,\n header_text: state.headerText,\n homepage_link: state.homePageLink,\n blob_id: state.avatarBlobId,\n inbox_id: state.liveChatWidgetInboxId,\n };\n emit('updatePortal', portal);\n};\n\nasync function uploadLogoToStorage({ file }) {\n try {\n const { fileUrl, blobId } = await uploadFile(file);\n if (fileUrl) {\n state.logoUrl = fileUrl;\n state.avatarBlobId = blobId;\n }\n useAlert(t('HELP_CENTER.PORTAL_SETTINGS.FORM.AVATAR.IMAGE_UPLOAD_SUCCESS'));\n } catch (error) {\n useAlert(t('HELP_CENTER.PORTAL_SETTINGS.FORM.AVATAR.IMAGE_UPLOAD_ERROR'));\n }\n}\n\nasync function deleteLogo() {\n try {\n const portalSlug = props.activePortal?.slug;\n await store.dispatch('portals/deleteLogo', {\n portalSlug,\n });\n useAlert(t('HELP_CENTER.PORTAL_SETTINGS.FORM.AVATAR.IMAGE_DELETE_SUCCESS'));\n } catch (error) {\n useAlert(\n error?.message ||\n t('HELP_CENTER.PORTAL_SETTINGS.FORM.AVATAR.IMAGE_DELETE_ERROR')\n );\n }\n}\n\nconst handleAvatarUpload = file => {\n if (checkFileSizeLimit(file, MAXIMUM_FILE_UPLOAD_SIZE)) {\n uploadLogoToStorage(file);\n } else {\n const errorKey =\n 'HELP_CENTER.PORTAL_SETTINGS.FORM.AVATAR.IMAGE_UPLOAD_SIZE_ERROR';\n useAlert(t(errorKey, { size: MAXIMUM_FILE_UPLOAD_SIZE }));\n }\n};\n\nconst handleAvatarDelete = () => {\n state.logoUrl = '';\n state.avatarBlobId = '';\n deleteLogo();\n};\n</script>\n\n<template>\n <div class=\"flex flex-col w-full gap-4\">\n <div class=\"flex flex-col w-full gap-2\">\n <label class=\"mb-0.5 text-sm font-medium text-gray-900 dark:text-gray-50\">\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.AVATAR.LABEL') }}\n </label>\n <Avatar\n :src=\"state.logoUrl\"\n :name=\"state.name\"\n :size=\"72\"\n allow-upload\n icon-name=\"i-lucide-building-2\"\n @upload=\"handleAvatarUpload\"\n @delete=\"handleAvatarDelete\"\n />\n </div>\n <div class=\"flex flex-col w-full gap-4\">\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap py-2.5 text-n-slate-12\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.NAME.LABEL') }}\n </label>\n <Input\n v-model=\"state.name\"\n :placeholder=\"t('HELP_CENTER.PORTAL_SETTINGS.FORM.NAME.PLACEHOLDER')\"\n :message-type=\"nameError ? 'error' : 'info'\"\n :message=\"nameError\"\n custom-input-class=\"!bg-transparent dark:!bg-transparent\"\n @input=\"v$.name.$touch()\"\n @blur=\"v$.name.$touch()\"\n />\n </div>\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap py-2.5 text-n-slate-12\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.HEADER_TEXT.LABEL') }}\n </label>\n <Input\n v-model=\"state.headerText\"\n :placeholder=\"\n t('HELP_CENTER.PORTAL_SETTINGS.FORM.HEADER_TEXT.PLACEHOLDER')\n \"\n custom-input-class=\"!bg-transparent dark:!bg-transparent\"\n />\n </div>\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap text-n-slate-12 py-2.5\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.PAGE_TITLE.LABEL') }}\n </label>\n <Input\n v-model=\"state.pageTitle\"\n :placeholder=\"\n t('HELP_CENTER.PORTAL_SETTINGS.FORM.PAGE_TITLE.PLACEHOLDER')\n \"\n custom-input-class=\"!bg-transparent dark:!bg-transparent\"\n />\n </div>\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap text-n-slate-12 py-2.5\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.HOME_PAGE_LINK.LABEL') }}\n </label>\n <Input\n v-model=\"state.homePageLink\"\n :placeholder=\"\n t('HELP_CENTER.PORTAL_SETTINGS.FORM.HOME_PAGE_LINK.PLACEHOLDER')\n \"\n :message-type=\"homePageLinkError ? 'error' : 'info'\"\n :message=\"homePageLinkError\"\n custom-input-class=\"!bg-transparent dark:!bg-transparent\"\n @input=\"v$.homePageLink.$touch()\"\n @blur=\"v$.homePageLink.$touch()\"\n />\n </div>\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap py-2.5 text-n-slate-12\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.SLUG.LABEL') }}\n </label>\n <Input\n v-model=\"state.slug\"\n :placeholder=\"t('HELP_CENTER.PORTAL_SETTINGS.FORM.SLUG.PLACEHOLDER')\"\n :message-type=\"slugError ? 'error' : 'info'\"\n :message=\"slugError || buildPortalURL(state.slug)\"\n custom-input-class=\"!bg-transparent dark:!bg-transparent\"\n @input=\"v$.slug.$touch()\"\n @blur=\"v$.slug.$touch()\"\n />\n </div>\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap py-2.5 text-n-slate-12\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.LIVE_CHAT_WIDGET.LABEL') }}\n </label>\n <ComboBox\n v-model=\"state.liveChatWidgetInboxId\"\n :options=\"liveChatWidgets\"\n :placeholder=\"\n t('HELP_CENTER.PORTAL_SETTINGS.FORM.LIVE_CHAT_WIDGET.PLACEHOLDER')\n \"\n :message=\"\n t('HELP_CENTER.PORTAL_SETTINGS.FORM.LIVE_CHAT_WIDGET.HELP_TEXT')\n \"\n class=\"[&>div>button:not(.focused)]:!outline-n-weak\"\n />\n </div>\n <div\n class=\"grid items-start justify-between w-full gap-2 grid-cols-[200px,1fr]\"\n >\n <label\n class=\"text-sm font-medium whitespace-nowrap py-2.5 text-n-slate-12\"\n >\n {{ t('HELP_CENTER.PORTAL_SETTINGS.FORM.BRAND_COLOR.LABEL') }}\n </label>\n <div class=\"w-[432px] justify-start\">\n <ColorPicker v-model=\"state.widgetColor\" />\n </div>\n </div>\n <div class=\"flex justify-end w-full gap-2\">\n <Button\n :label=\"t('HELP_CENTER.PORTAL_SETTINGS.FORM.SAVE_CHANGES')\"\n :disabled=\"!hasChanges || isUpdatingPortal || v$.$invalid\"\n :is-loading=\"isUpdatingPortal\"\n @click=\"handleUpdatePortal\"\n />\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalConfigurationSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalSettings.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/CreatePortalDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/PortalSwitcher.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/PortalSwitcher.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Inbox/InboxCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX.MENU_ITEM.MARK_AS_${isUnread.value?'READ':'UNREAD'}`' dynamic key is used'","line":69,"column":12,"nodeType":"CallExpression","endLine":69,"endColumn":78},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX.TYPES_NEXT.${type}`' dynamic key is used'","line":105,"column":25,"nodeType":"CallExpression","endLine":105,"endColumn":54}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref, onBeforeMount } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { getInboxIconByType } from 'dashboard/helper/inbox';\nimport { dynamicTime, shortTimestamp } from 'shared/helpers/timeHelper';\nimport {\n snoozedReopenTimeToTimestamp,\n shortenSnoozeTime,\n} from 'dashboard/helper/snoozeHelpers';\nimport { NOTIFICATION_TYPES_MAPPING } from 'dashboard/routes/dashboard/inbox/helpers/InboxViewHelpers';\n\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\nimport CardPriorityIcon from 'dashboard/components-next/Conversation/ConversationCard/CardPriorityIcon.vue';\nimport SLACardLabel from 'dashboard/components-next/Conversation/ConversationCard/SLACardLabel.vue';\nimport InboxContextMenu from 'dashboard/routes/dashboard/inbox/components/InboxContextMenu.vue';\n\nconst props = defineProps({\n inboxItem: { type: Object, default: () => ({}) },\n stateInbox: { type: Object, default: () => ({}) },\n});\n\nconst emit = defineEmits([\n 'click',\n 'contextMenuOpen',\n 'contextMenuClose',\n 'markNotificationAsRead',\n 'markNotificationAsUnRead',\n 'deleteNotification',\n]);\n\nconst { t } = useI18n();\n\nconst isContextMenuOpen = ref(false);\nconst contextMenuPosition = ref({ x: null, y: null });\nconst slaCardLabel = ref(null);\n\nconst getMessageClasses = {\n emphasis: 'text-sm font-medium text-n-slate-11',\n emphasisUnread: 'text-sm font-medium text-n-slate-12',\n normal: 'text-sm font-normal text-n-slate-11',\n normalUnread: 'text-sm text-n-slate-12',\n};\n\nconst primaryActor = computed(() => props.inboxItem?.primaryActor);\nconst meta = computed(() => primaryActor.value?.meta);\nconst assigneeMeta = computed(() => meta.value?.sender);\nconst isUnread = computed(() => !props.inboxItem?.readAt);\nconst inbox = computed(() => props.stateInbox);\n\nconst inboxIcon = computed(() => {\n const { channelType, medium } = inbox.value;\n return getInboxIconByType(channelType, medium);\n});\n\nconst hasSlaThreshold = computed(() => {\n return slaCardLabel.value?.hasSlaThreshold && primaryActor.value?.slaPolicyId;\n});\n\nconst lastActivityAt = computed(() => {\n const timestamp = props.inboxItem?.lastActivityAt;\n return timestamp ? shortTimestamp(dynamicTime(timestamp)) : '';\n});\n\nconst menuItems = computed(() => [\n {\n key: isUnread.value ? 'mark_as_read' : 'mark_as_unread',\n icon: isUnread.value ? 'mail' : 'mail-unread',\n label: t(`INBOX.MENU_ITEM.MARK_AS_${isUnread.value ? 'READ' : 'UNREAD'}`),\n },\n { key: 'delete', icon: 'delete', label: t('INBOX.MENU_ITEM.DELETE') },\n]);\n\nconst messageClasses = computed(() => ({\n emphasis: isUnread.value\n ? getMessageClasses.emphasisUnread\n : getMessageClasses.emphasis,\n normal: isUnread.value\n ? getMessageClasses.normalUnread\n : getMessageClasses.normal,\n}));\n\nconst formatPushMessage = message => {\n if (message.startsWith(': ')) {\n return message.slice(2);\n }\n\n return message.replace(/^([^:]+):/g, (match, name) => {\n return `<span class=\"${messageClasses.value.emphasis}\">${name}:</span>`;\n });\n};\n\nconst formattedMessage = computed(() => {\n const messageContent = `<span class=\"${messageClasses.value.normal}\">${formatPushMessage(props.inboxItem?.pushMessageBody || '')}</span>`;\n\n return isUnread.value\n ? `<span class=\"inline-flex flex-shrink-0 w-2 h-2 mb-px rounded-full bg-n-iris-10 ltr:mr-1 rtl:ml-1\"></span> ${messageContent}`\n : messageContent;\n});\n\nconst notificationDetails = computed(() => {\n const type = props.inboxItem?.notificationType?.toUpperCase() || '';\n const [icon = '', color = 'text-n-blue-text'] =\n NOTIFICATION_TYPES_MAPPING[type] || [];\n return { text: type ? t(`INBOX.TYPES_NEXT.${type}`) : '', icon, color };\n});\n\nconst snoozedUntilTime = computed(() => {\n const { snoozedUntil } = props.inboxItem;\n if (!snoozedUntil) return null;\n return shortenSnoozeTime(\n dynamicTime(snoozedReopenTimeToTimestamp(snoozedUntil))\n );\n});\n\nconst hasLastSnoozed = computed(() => props.inboxItem?.meta?.lastSnoozedAt);\n\nconst snoozedText = computed(() => {\n return !hasLastSnoozed.value\n ? t('INBOX.TYPES_NEXT.SNOOZED_UNTIL', {\n time: shortTimestamp(snoozedUntilTime.value),\n })\n : t('INBOX.TYPES_NEXT.SNOOZED_ENDS');\n});\n\nconst contextMenuActions = {\n close: () => {\n isContextMenuOpen.value = false;\n contextMenuPosition.value = { x: null, y: null };\n emit('contextMenuClose');\n },\n open: e => {\n e.preventDefault();\n contextMenuPosition.value = {\n x: e.pageX || e.clientX,\n y: e.pageY || e.clientY,\n };\n isContextMenuOpen.value = true;\n emit('contextMenuOpen');\n },\n handle: key => {\n const actions = {\n mark_as_read: () => emit('markNotificationAsRead', props.inboxItem),\n mark_as_unread: () => emit('markNotificationAsUnRead', props.inboxItem),\n delete: () => emit('deleteNotification', props.inboxItem),\n };\n actions[key]?.();\n },\n};\n\nonBeforeMount(contextMenuActions.close);\n</script>\n\n<template>\n <div\n role=\"button\"\n class=\"flex flex-col w-full gap-1 p-3 transition-all duration-300 ease-in-out cursor-pointer\"\n @contextmenu=\"contextMenuActions.open($event)\"\n @click=\"emit('click')\"\n >\n <div class=\"flex items-start gap-2\">\n <Avatar\n :name=\"assigneeMeta.name\"\n :src=\"assigneeMeta.thumbnail\"\n :size=\"20\"\n rounded-full\n class=\"mt-1\"\n />\n <p v-dompurify-html=\"formattedMessage\" class=\"mb-0 line-clamp-2\" />\n </div>\n <div class=\"flex items-center justify-between h-6 gap-2\">\n <div class=\"flex items-center flex-1 min-w-0 gap-1\">\n <div\n v-if=\"snoozedUntilTime || hasLastSnoozed\"\n class=\"flex items-center w-full min-w-0 gap-2 ltr:pl-1 rtl:pr-1\"\n >\n <Icon\n :icon=\"\n !hasLastSnoozed\n ? 'i-lucide-alarm-clock-plus'\n : 'i-lucide-alarm-clock-off'\n \"\n class=\"flex-shrink-0 size-4\"\n :class=\"!isUnread ? 'text-n-slate-11' : 'text-n-blue-text'\"\n />\n <span\n class=\"text-xs font-medium truncate\"\n :class=\"!isUnread ? 'text-n-slate-11' : 'text-n-blue-text'\"\n >\n {{ snoozedText }}\n </span>\n </div>\n <div\n v-else-if=\"notificationDetails.text\"\n class=\"flex items-center w-full min-w-0 gap-2 ltr:pl-1 rtl:pr-1\"\n >\n <Icon\n :icon=\"notificationDetails.icon\"\n :class=\"isUnread ? notificationDetails.color : 'text-n-slate-11'\"\n class=\"flex-shrink-0 size-4\"\n />\n <span\n class=\"text-xs font-medium truncate\"\n :class=\"isUnread ? notificationDetails.color : 'text-n-slate-11'\"\n >\n {{ notificationDetails.text }}\n </span>\n </div>\n </div>\n <div class=\"flex items-center flex-shrink-0 gap-2\">\n <SLACardLabel\n v-show=\"hasSlaThreshold\"\n ref=\"slaCardLabel\"\n :conversation=\"primaryActor\"\n class=\"[&>span]:text-xs\"\n :class=\"\n !isUnread && '[&>span]:text-n-slate-11 [&>div>svg]:fill-n-slate-11'\n \"\n />\n <div v-if=\"hasSlaThreshold\" class=\"w-px h-3 rounded-sm bg-n-slate-4\" />\n <CardPriorityIcon\n v-if=\"primaryActor?.priority\"\n :priority=\"primaryActor?.priority\"\n class=\"[&>svg]:size-4\"\n />\n <div\n v-if=\"inboxIcon\"\n v-tooltip.left=\"inbox?.name\"\n class=\"flex items-center justify-center flex-shrink-0 rounded-full bg-n-alpha-2 size-4\"\n >\n <Icon\n :icon=\"inboxIcon\"\n class=\"flex-shrink-0 text-n-slate-11 size-2.5\"\n />\n </div>\n <span class=\"text-xs text-n-slate-10\">\n {{ lastActivityAt }}\n </span>\n </div>\n </div>\n <InboxContextMenu\n v-if=\"isContextMenuOpen\"\n :context-menu-position=\"contextMenuPosition\"\n :menu-items=\"menuItems\"\n @close=\"contextMenuActions.close\"\n @select-action=\"contextMenuActions.handle\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Label/AddLabel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Label/LabelItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Label/story/AddLabel.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Label/story/Label.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/Label/story/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/AttachmentPreviews.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/ContactSelector.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.LABEL`' dynamic key is used'","line":103,"column":12,"nodeType":"CallExpression","endLine":103,"endColumn":36},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.CONTACT_CREATING`' dynamic key is used'","line":111,"column":14,"nodeType":"CallExpression","endLine":111,"endColumn":49},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.CONTACT_CREATING`' dynamic key is used'","line":122,"column":17,"nodeType":"CallExpression","endLine":122,"endColumn":52},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.TAG_INPUT_PLACEHOLDER`' dynamic key is used'","line":138,"column":23,"nodeType":"CallExpression","endLine":138,"endColumn":63}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { INPUT_TYPES } from 'dashboard/components-next/taginput/helper/tagInputHelper.js';\n\nimport TagInput from 'dashboard/components-next/taginput/TagInput.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n contacts: {\n type: Array,\n required: true,\n },\n selectedContact: {\n type: Object,\n default: null,\n },\n showContactsDropdown: {\n type: Boolean,\n required: true,\n },\n isLoading: {\n type: Boolean,\n required: true,\n },\n isCreatingContact: {\n type: Boolean,\n required: true,\n },\n contactId: {\n type: String,\n default: null,\n },\n contactableInboxesList: {\n type: Array,\n default: () => [],\n },\n showInboxesDropdown: {\n type: Boolean,\n required: true,\n },\n hasErrors: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits([\n 'searchContacts',\n 'setSelectedContact',\n 'clearSelectedContact',\n 'updateDropdown',\n]);\n\nconst i18nPrefix = 'COMPOSE_NEW_CONVERSATION.FORM.CONTACT_SELECTOR';\nconst { t } = useI18n();\n\nconst inputType = ref(INPUT_TYPES.EMAIL);\n\nconst contactsList = computed(() => {\n return props.contacts?.map(({ name, id, thumbnail, email, ...rest }) => ({\n id,\n label: email ? `${name} (${email})` : name,\n value: id,\n thumbnail: { name, src: thumbnail },\n ...rest,\n name,\n email,\n action: 'contact',\n }));\n});\n\nconst selectedContactLabel = computed(() => {\n const { name, email = '', phoneNumber = '' } = props.selectedContact || {};\n if (email) {\n return `${name} (${email})`;\n }\n if (phoneNumber) {\n return `${name} (${phoneNumber})`;\n }\n return name || '';\n});\n\nconst errorClass = computed(() => {\n return props.hasErrors\n ? '[&_input]:placeholder:!text-n-ruby-9 [&_input]:dark:placeholder:!text-n-ruby-9'\n : '';\n});\n\nconst handleInput = value => {\n // Update input type based on whether input starts with '+'\n // If it does, set input type to 'tel'\n // Otherwise, set input type to 'email'\n inputType.value = value.startsWith('+') ? INPUT_TYPES.TEL : INPUT_TYPES.EMAIL;\n emit('searchContacts', value);\n};\n</script>\n\n<template>\n <div class=\"relative flex-1 px-4 py-3 overflow-y-visible\">\n <div class=\"flex items-baseline w-full gap-3 min-h-7\">\n <label class=\"text-sm font-medium text-n-slate-11 whitespace-nowrap\">\n {{ t(`${i18nPrefix}.LABEL`) }}\n </label>\n\n <div\n v-if=\"isCreatingContact\"\n class=\"flex items-center gap-1.5 rounded-md bg-n-alpha-2 px-3 min-h-7 min-w-0\"\n >\n <span class=\"text-sm truncate text-n-slate-12\">\n {{ t(`${i18nPrefix}.CONTACT_CREATING`) }}\n </span>\n </div>\n <div\n v-else-if=\"selectedContact\"\n class=\"flex items-center gap-1.5 rounded-md bg-n-alpha-2 min-h-7 min-w-0\"\n :class=\"!contactId ? 'ltr:pl-3 rtl:pr-3 ltr:pr-1 rtl:pl-1' : 'px-3'\"\n >\n <span class=\"text-sm truncate text-n-slate-12\">\n {{\n isCreatingContact\n ? t(`${i18nPrefix}.CONTACT_CREATING`)\n : selectedContactLabel\n }}\n </span>\n <Button\n v-if=\"!contactId\"\n variant=\"ghost\"\n icon=\"i-lucide-x\"\n color=\"slate\"\n :disabled=\"contactId\"\n size=\"xs\"\n @click=\"emit('clearSelectedContact')\"\n />\n </div>\n <TagInput\n v-else\n :placeholder=\"t(`${i18nPrefix}.TAG_INPUT_PLACEHOLDER`)\"\n mode=\"single\"\n :menu-items=\"contactsList\"\n :show-dropdown=\"showContactsDropdown\"\n :is-loading=\"isLoading\"\n :disabled=\"contactableInboxesList?.length > 0 && showInboxesDropdown\"\n allow-create\n :type=\"inputType\"\n class=\"flex-1 min-h-7\"\n :class=\"errorClass\"\n focus-on-mount\n @input=\"handleInput\"\n @on-click-outside=\"emit('updateDropdown', 'contacts', false)\"\n @add=\"emit('setSelectedContact', $event)\"\n @remove=\"emit('clearSelectedContact')\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/ContentTemplateForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/ContentTemplateSelector.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/EmailOptions.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.SUBJECT_PLACEHOLDER`' dynamic key is used'","line":78,"column":23,"nodeType":"CallExpression","endLine":78,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.SUBJECT_LABEL`' dynamic key is used'","line":79,"column":17,"nodeType":"CallExpression","endLine":79,"endColumn":49},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.CC_LABEL`' dynamic key is used'","line":88,"column":12,"nodeType":"CallExpression","endLine":88,"endColumn":39},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.CC_PLACEHOLDER`' dynamic key is used'","line":93,"column":25,"nodeType":"CallExpression","endLine":93,"endColumn":58},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.BCC_BUTTON`' dynamic key is used'","line":105,"column":19,"nodeType":"CallExpression","endLine":105,"endColumn":48},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.BCC_LABEL`' dynamic key is used'","line":121,"column":12,"nodeType":"CallExpression","endLine":121,"endColumn":40},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nPrefix}.BCC_PLACEHOLDER`' dynamic key is used'","line":125,"column":23,"nodeType":"CallExpression","endLine":125,"endColumn":57}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nimport TagInput from 'dashboard/components-next/taginput/TagInput.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport InlineInput from 'dashboard/components-next/inline-input/InlineInput.vue';\n\nconst props = defineProps({\n contacts: { type: Array, required: true },\n showCcEmailsDropdown: { type: Boolean, required: false },\n showBccEmailsDropdown: { type: Boolean, required: false },\n isLoading: { type: Boolean, default: false },\n hasErrors: { type: Boolean, default: false },\n});\n\nconst emit = defineEmits([\n 'searchCcEmails',\n 'searchBccEmails',\n 'updateDropdown',\n]);\n\nconst i18nPrefix = `COMPOSE_NEW_CONVERSATION.FORM.EMAIL_OPTIONS`;\n\nconst showBccInput = ref(false);\n\nconst toggleBccInput = () => {\n showBccInput.value = !showBccInput.value;\n};\n\nconst subject = defineModel('subject', { type: String, default: '' });\nconst ccEmails = defineModel('ccEmails', { type: String, default: '' });\nconst bccEmails = defineModel('bccEmails', { type: String, default: '' });\n\nconst { t } = useI18n();\n\n// Convert string to array for TagInput\nconst ccEmailsArray = computed(() =>\n props.ccEmails ? props.ccEmails.split(',').map(email => email.trim()) : []\n);\n\nconst bccEmailsArray = computed(() =>\n props.bccEmails ? props.bccEmails.split(',').map(email => email.trim()) : []\n);\n\nconst contactEmailsList = computed(() => {\n return props.contacts?.map(({ name, id, email }) => ({\n id,\n label: email,\n email,\n thumbnail: { name: name, src: '' },\n value: id,\n action: 'email',\n }));\n});\n\n// Handle updates from TagInput and convert array back to string\nconst handleCcUpdate = value => {\n ccEmails.value = value.join(',');\n};\n\nconst handleBccUpdate = value => {\n bccEmails.value = value.join(',');\n};\n\nconst inputClass = computed(() => {\n return props.hasErrors\n ? 'placeholder:!text-n-ruby-9 dark:placeholder:!text-n-ruby-9'\n : '';\n});\n</script>\n\n<template>\n <div class=\"flex flex-col divide-y divide-n-strong\">\n <div class=\"flex items-baseline flex-1 w-full h-8 gap-3 px-4 py-3\">\n <InlineInput\n v-model=\"subject\"\n :placeholder=\"t(`${i18nPrefix}.SUBJECT_PLACEHOLDER`)\"\n :label=\"t(`${i18nPrefix}.SUBJECT_LABEL`)\"\n focus-on-mount\n :custom-input-class=\"inputClass\"\n />\n </div>\n <div class=\"flex items-baseline flex-1 w-full gap-3 px-4 py-3 min-h-8\">\n <label\n class=\"mb-0.5 text-sm font-medium whitespace-nowrap text-n-slate-11\"\n >\n {{ t(`${i18nPrefix}.CC_LABEL`) }}\n </label>\n <div class=\"flex items-center w-full gap-3 min-h-7\">\n <TagInput\n :model-value=\"ccEmailsArray\"\n :placeholder=\"t(`${i18nPrefix}.CC_PLACEHOLDER`)\"\n :menu-items=\"contactEmailsList\"\n :show-dropdown=\"showCcEmailsDropdown\"\n :is-loading=\"isLoading\"\n type=\"email\"\n class=\"flex-1 min-h-7\"\n @focus=\"emit('updateDropdown', 'cc', true)\"\n @input=\"emit('searchCcEmails', $event)\"\n @on-click-outside=\"emit('updateDropdown', 'cc', false)\"\n @update:model-value=\"handleCcUpdate\"\n />\n <Button\n :label=\"t(`${i18nPrefix}.BCC_BUTTON`)\"\n variant=\"ghost\"\n size=\"sm\"\n color=\"slate\"\n class=\"flex-shrink-0\"\n @click=\"toggleBccInput\"\n />\n </div>\n </div>\n <div\n v-if=\"showBccInput\"\n class=\"flex items-baseline flex-1 w-full gap-3 px-4 py-3 min-h-8\"\n >\n <label\n class=\"mb-0.5 text-sm font-medium whitespace-nowrap text-n-slate-11\"\n >\n {{ t(`${i18nPrefix}.BCC_LABEL`) }}\n </label>\n <TagInput\n :model-value=\"bccEmailsArray\"\n :placeholder=\"t(`${i18nPrefix}.BCC_PLACEHOLDER`)\"\n :menu-items=\"contactEmailsList\"\n :show-dropdown=\"showBccEmailsDropdown\"\n :is-loading=\"isLoading\"\n type=\"email\"\n class=\"flex-1 min-h-7\"\n focus-on-mount\n @focus=\"emit('updateDropdown', 'bcc', true)\"\n @input=\"emit('searchBccEmails', $event)\"\n @on-click-outside=\"emit('updateDropdown', 'bcc', false)\"\n @update:model-value=\"handleBccUpdate\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/InboxEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/InboxSelector.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/MessageEditor.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/WhatsAppOptions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/WhatsappTemplate.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/story/ComposeNewConversationForm.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/components/story/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/helpers/composeConversationHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/NewConversation/helpers/specs/composeConversationHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/SidebarActionsHeader.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/SidebarActionsHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/TeleportWithDirection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/avatar/Avatar.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/avatar/Avatar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/banner/Banner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/banner/PromoBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/breadcrumb/Breadcrumb.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/breadcrumb/Breadcrumb.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/button/Button.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/button/Button.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/button/ConfirmButton.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/button/ConfirmButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/button/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/buttonGroup/ButtonGroup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/AnimatingImg/AnimatingImg.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/AnimatingImg/Guardrails.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/AnimatingImg/ResponseGuidelines.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/AnimatingImg/Scenarios.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/AnimatingImg/Settings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/PageLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesDialog.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesInput.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AddNewScenariosDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AssistantCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AssistantCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/AssistantPlayground.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":70,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":70,"endColumn":18,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[1654,1712],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/BulkSelectBar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/DocumentCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/DocumentCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/InboxCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/InboxCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/MessageList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/ResponseCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/ResponseCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/RuleCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/RuleCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/ScenariosCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/ScenariosCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/SuggestedRules.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/SuggestedRules.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/ToolsDropdown.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/assistant/ToolsDropdown.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/BulkDeleteDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey.value}.BULK_DELETE.SUCCESS_MESSAGE`' dynamic key is used'","line":36,"column":14,"nodeType":"CallExpression","endLine":36,"endColumn":71},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey.value}.BULK_DELETE.ERROR_MESSAGE`' dynamic key is used'","line":38,"column":14,"nodeType":"CallExpression","endLine":38,"endColumn":69},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey}.BULK_DELETE.TITLE`' dynamic key is used'","line":55,"column":13,"nodeType":"CallExpression","endLine":55,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey}.BULK_DELETE.DESCRIPTION`' dynamic key is used'","line":56,"column":19,"nodeType":"CallExpression","endLine":56,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey}.BULK_DELETE.CONFIRM`' dynamic key is used'","line":57,"column":28,"nodeType":"CallExpression","endLine":57,"endColumn":71}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\n\nconst props = defineProps({\n type: {\n type: String,\n required: true,\n },\n bulkIds: {\n type: Object,\n required: true,\n },\n});\n\nconst emit = defineEmits(['deleteSuccess']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst bulkDeleteDialogRef = ref(null);\nconst i18nKey = computed(() => props.type.toUpperCase());\n\nconst handleBulkDelete = async ids => {\n if (!ids) return;\n\n try {\n await store.dispatch(\n 'captainBulkActions/handleBulkDelete',\n Array.from(props.bulkIds)\n );\n\n emit('deleteSuccess');\n useAlert(t(`CAPTAIN.${i18nKey.value}.BULK_DELETE.SUCCESS_MESSAGE`));\n } catch (error) {\n useAlert(t(`CAPTAIN.${i18nKey.value}.BULK_DELETE.ERROR_MESSAGE`));\n }\n};\n\nconst handleDialogConfirm = async () => {\n await handleBulkDelete(Array.from(props.bulkIds));\n bulkDeleteDialogRef.value?.close();\n};\n\ndefineExpose({ dialogRef: bulkDeleteDialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"bulkDeleteDialogRef\"\n type=\"alert\"\n :title=\"t(`CAPTAIN.${i18nKey}.BULK_DELETE.TITLE`)\"\n :description=\"t(`CAPTAIN.${i18nKey}.BULK_DELETE.DESCRIPTION`)\"\n :confirm-button-label=\"t(`CAPTAIN.${i18nKey}.BULK_DELETE.CONFIRM`)\"\n @confirm=\"handleDialogConfirm\"\n />\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/DeleteDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey.value}.DELETE.SUCCESS_MESSAGE`' dynamic key is used'","line":42,"column":14,"nodeType":"CallExpression","endLine":42,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey.value}.DELETE.ERROR_MESSAGE`' dynamic key is used'","line":44,"column":14,"nodeType":"CallExpression","endLine":44,"endColumn":64},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey}.DELETE.TITLE`' dynamic key is used'","line":61,"column":13,"nodeType":"CallExpression","endLine":61,"endColumn":49},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey}.DELETE.DESCRIPTION`' dynamic key is used'","line":62,"column":19,"nodeType":"CallExpression","endLine":62,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.${i18nKey}.DELETE.CONFIRM`' dynamic key is used'","line":63,"column":28,"nodeType":"CallExpression","endLine":63,"endColumn":66}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\n\nconst props = defineProps({\n type: {\n type: String,\n required: true,\n },\n translationKey: {\n type: String,\n required: true,\n },\n entity: {\n type: Object,\n required: true,\n },\n deletePayload: {\n type: Object,\n default: null,\n },\n});\n\nconst emit = defineEmits(['deleteSuccess']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst deleteDialogRef = ref(null);\nconst i18nKey = computed(() => {\n return props.translationKey || props.type.toUpperCase();\n});\n\nconst deleteEntity = async payload => {\n if (!payload) return;\n\n try {\n await store.dispatch(`captain${props.type}/delete`, payload);\n emit('deleteSuccess');\n useAlert(t(`CAPTAIN.${i18nKey.value}.DELETE.SUCCESS_MESSAGE`));\n } catch (error) {\n useAlert(t(`CAPTAIN.${i18nKey.value}.DELETE.ERROR_MESSAGE`));\n }\n};\n\nconst handleDialogConfirm = async () => {\n await deleteEntity(props.deletePayload || props.entity.id);\n deleteDialogRef.value?.close();\n};\n\ndefineExpose({ dialogRef: deleteDialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"deleteDialogRef\"\n type=\"alert\"\n :title=\"t(`CAPTAIN.${i18nKey}.DELETE.TITLE`)\"\n :description=\"t(`CAPTAIN.${i18nKey}.DELETE.DESCRIPTION`)\"\n :confirm-button-label=\"t(`CAPTAIN.${i18nKey}.DELETE.CONFIRM`)\"\n @confirm=\"handleDialogConfirm\"\n />\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/Paywall.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/asset/AssetCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":71,"column":53,"nodeType":null,"endLine":72,"endColumn":13,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1891],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { copyTextToClipboard } from 'shared/helpers/clipboard';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n fileUrl: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['action']);\nconst { t } = useI18n();\n\nconst shortcut = computed(() => `{{ media.${props.name} }}`);\n\nconst copyShortcut = async () => {\n await copyTextToClipboard(shortcut.value);\n useAlert(t('CAPTAIN.ASSETS.COPY_SHORTCUT.SUCCESS'));\n};\n\nconst copyUrl = async () => {\n if (!props.fileUrl) return;\n await copyTextToClipboard(props.fileUrl);\n useAlert(t('CAPTAIN.ASSETS.COPY_URL.SUCCESS'));\n};\n\nconst handleDelete = () => {\n emit('action', { action: 'delete', id: props.id });\n};\n\nconst handleEdit = () => {\n emit('action', { action: 'edit', id: props.id });\n};\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div class=\"flex gap-4 p-4 border border-n-weak rounded-md bg-n-alpha-2\">\n <div class=\"w-20 h-20 rounded-md overflow-hidden bg-n-slate-3\">\n <img\n v-if=\"fileUrl\"\n :src=\"fileUrl\"\n :alt=\"name\"\n class=\"w-full h-full object-cover\"\n />\n <div v-else class=\"w-full h-full flex items-center justify-center\">\n <i class=\"text-2xl i-ph-image text-n-slate-11\" />\n </div>\n </div>\n\n <div class=\"flex-1 flex flex-col gap-2\">\n <div class=\"flex items-center justify-between gap-4\">\n <div>\n <h4 class=\"text-base font-semibold text-n-slate-12\">\n {{ name }}\n </h4>\n <p class=\"text-xs text-n-slate-11\">\n {{ t('CAPTAIN.ASSETS.SHORTCUT_LABEL') }}{{$t(`:\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { copyTextToClipboard } from 'shared/helpers/clipboard';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n fileUrl: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['action']);\nconst { t } = useI18n();\n\nconst shortcut = computed(() => `{{ media.${props.name} }}`);\n\nconst copyShortcut = async () => {\n await copyTextToClipboard(shortcut.value);\n useAlert(t('CAPTAIN.ASSETS.COPY_SHORTCUT.SUCCESS'));\n};\n\nconst copyUrl = async () => {\n if (!props.fileUrl) return;\n await copyTextToClipboard(props.fileUrl);\n useAlert(t('CAPTAIN.ASSETS.COPY_URL.SUCCESS'));\n};\n\nconst handleDelete = () => {\n emit('action', { action: 'delete', id: props.id });\n};\n\nconst handleEdit = () => {\n emit('action', { action: 'edit', id: props.id });\n};\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div class=\"flex gap-4 p-4 border border-n-weak rounded-md bg-n-alpha-2\">\n <div class=\"w-20 h-20 rounded-md overflow-hidden bg-n-slate-3\">\n <img\n v-if=\"fileUrl\"\n :src=\"fileUrl\"\n :alt=\"name\"\n class=\"w-full h-full object-cover\"\n />\n <div v-else class=\"w-full h-full flex items-center justify-center\">\n <i class=\"text-2xl i-ph-image text-n-slate-11\" />\n </div>\n </div>\n\n <div class=\"flex-1 flex flex-col gap-2\">\n <div class=\"flex items-center justify-between gap-4\">\n <div>\n <h4 class=\"text-base font-semibold text-n-slate-12\">\n {{ name }}\n </h4>\n <p class=\"text-xs text-n-slate-11\">\n {{ t('CAPTAIN.ASSETS.SHORTCUT_LABEL') }}:\n <span class=\"font-mono\">{{ shortcut }}</span>\n </p>\n </div>\n <div class=\"flex gap-1\">\n <Button\n icon=\"i-lucide-pencil\"\n variant=\"ghost\"\n color=\"slate\"\n @click=\"handleEdit\"\n />\n <Button\n icon=\"i-lucide-trash\"\n variant=\"ghost\"\n color=\"slate\"\n @click=\"handleDelete\"\n />\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <Button\n sm\n icon=\"i-lucide-copy\"\n variant=\"ghost\"\n color=\"slate\"\n :label=\"t('CAPTAIN.ASSETS.COPY_SHORTCUT.LABEL')\"\n @click=\"copyShortcut\"\n />\n <Button\n v-if=\"fileUrl\"\n sm\n icon=\"i-lucide-link\"\n variant=\"ghost\"\n color=\"slate\"\n :label=\"t('CAPTAIN.ASSETS.COPY_URL.LABEL')\"\n @click=\"copyUrl\"\n />\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/asset/AssetForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.ASSETS.FORM.${field.toUpperCase()}.ERROR`' dynamic key is used'","line":59,"column":7,"nodeType":"CallExpression","endLine":59,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'isEditMode?'CAPTAIN.FORM.EDIT':'CAPTAIN.FORM.CREATE'' dynamic key is used'","line":199,"column":17,"nodeType":"CallExpression","endLine":199,"endColumn":76}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, ref, nextTick, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, requiredIf } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n default: 'create',\n validator: value => ['create', 'edit'].includes(value),\n },\n asset: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB\nconst ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];\n\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('captainAssets/getUIFlags'),\n};\n\nconst initialState = {\n name: '',\n file: null,\n};\n\nconst state = reactive({ ...initialState });\nconst fileInputRef = ref(null);\nconst isEditMode = computed(() => props.mode === 'edit');\n\nconst validationRules = {\n name: { required },\n file: { required: requiredIf(() => !isEditMode.value) },\n};\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isLoading = computed(() =>\n isEditMode.value\n ? formState.uiFlags.value.updatingItem\n : formState.uiFlags.value.creatingItem\n);\n\nconst getErrorMessage = field => {\n return v$.value[field].$error\n ? t(`CAPTAIN.ASSETS.FORM.${field.toUpperCase()}.ERROR`)\n : '';\n};\n\nconst formErrors = computed(() => ({\n name: getErrorMessage('name'),\n file: getErrorMessage('file'),\n}));\n\nconst handleCancel = () => emit('cancel');\n\nconst openFileDialog = () => {\n nextTick(() => {\n fileInputRef.value?.click();\n });\n};\n\nconst handleFileChange = event => {\n const file = event.target.files[0];\n if (!file) return;\n\n if (!ALLOWED_TYPES.includes(file.type)) {\n useAlert(t('CAPTAIN.ASSETS.FORM.FILE.INVALID_TYPE'));\n event.target.value = '';\n return;\n }\n\n if (file.size > MAX_FILE_SIZE) {\n useAlert(t('CAPTAIN.ASSETS.FORM.FILE.TOO_LARGE'));\n event.target.value = '';\n return;\n }\n\n state.file = file;\n if (!state.name) {\n state.name = file.name.replace(/\\.[^/.]+$/, '');\n }\n};\n\nconst updateStateFromAsset = asset => {\n state.name = asset?.name || '';\n state.file = null;\n};\n\nconst prepareAssetDetails = () => {\n const formData = new FormData();\n formData.append('asset[name]', state.name);\n if (state.file) {\n formData.append('asset[file]', state.file);\n }\n return formData;\n};\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) return;\n\n emit('submit', prepareAssetDetails());\n};\n\nwatch(\n () => props.asset,\n asset => {\n if (isEditMode.value && asset) {\n updateStateFromAsset(asset);\n }\n },\n { immediate: true }\n);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <Input\n v-model=\"state.name\"\n :label=\"t('CAPTAIN.ASSETS.FORM.NAME.LABEL')\"\n :placeholder=\"t('CAPTAIN.ASSETS.FORM.NAME.PLACEHOLDER')\"\n :message=\"formErrors.name\"\n :message-type=\"formErrors.name ? 'error' : 'info'\"\n />\n\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.ASSETS.FORM.FILE.LABEL') }}\n </label>\n <input\n ref=\"fileInputRef\"\n type=\"file\"\n accept=\"image/*\"\n class=\"hidden\"\n @change=\"handleFileChange\"\n />\n <Button\n type=\"button\"\n :color=\"formErrors.file ? 'ruby' : 'slate'\"\n :variant=\"formErrors.file ? 'outline' : 'solid'\"\n class=\"!w-full !h-auto !justify-between !py-4\"\n :is-loading=\"isLoading\"\n @click=\"openFileDialog\"\n >\n <template #default>\n <div class=\"flex gap-2 items-center\">\n <div\n class=\"flex justify-center items-center w-10 h-10 rounded-lg bg-n-slate-3\"\n >\n <i class=\"text-xl i-ph-image text-n-slate-11\" />\n </div>\n <div class=\"flex flex-col flex-1 gap-1 items-start\">\n <p class=\"m-0 text-sm font-medium text-n-slate-12\">\n {{\n state.file\n ? state.file.name\n : t('CAPTAIN.ASSETS.FORM.FILE.CHOOSE_FILE')\n }}\n </p>\n <p class=\"m-0 text-xs text-n-slate-11\">\n {{\n state.file\n ? `${(state.file.size / 1024 / 1024).toFixed(2)} MB`\n : t('CAPTAIN.ASSETS.FORM.FILE.HELP_TEXT')\n }}\n </p>\n </div>\n </div>\n </template>\n </Button>\n <span v-if=\"formErrors.file\" class=\"text-xs text-n-ruby-11\">\n {{ formErrors.file }}\n </span>\n </div>\n\n <div class=\"flex gap-2 justify-end\">\n <Button\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('CAPTAIN.FORM.CANCEL')\"\n @click=\"handleCancel\"\n />\n <Button\n :label=\"t(isEditMode ? 'CAPTAIN.FORM.EDIT' : 'CAPTAIN.FORM.CREATE')\"\n @click=\"handleSubmit\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/asset/CreateAssetDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.SUCCESS_MESSAGE`' dynamic key is used'","line":21,"column":14,"nodeType":"CallExpression","endLine":21,"endColumn":45},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.ERROR_MESSAGE`' dynamic key is used'","line":25,"column":39,"nodeType":"CallExpression","endLine":25,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.TITLE`' dynamic key is used'","line":45,"column":13,"nodeType":"CallExpression","endLine":45,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { parseAPIErrorResponse } from 'dashboard/store/utils/api';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport AssetForm from './AssetForm.vue';\n\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\nconst store = useStore();\n\nconst dialogRef = ref(null);\nconst i18nKey = 'CAPTAIN.ASSETS.CREATE';\n\nconst handleSubmit = async newAsset => {\n try {\n await store.dispatch('captainAssets/create', newAsset);\n useAlert(t(`${i18nKey}.SUCCESS_MESSAGE`));\n dialogRef.value.close();\n } catch (error) {\n const errorMessage =\n parseAPIErrorResponse(error) || t(`${i18nKey}.ERROR_MESSAGE`);\n useAlert(errorMessage);\n }\n};\n\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleCancel = () => {\n dialogRef.value.close();\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"dialogRef\"\n :title=\"$t(`${i18nKey}.TITLE`)\"\n :description=\"$t('CAPTAIN.ASSETS.FORM_DESCRIPTION')\"\n :show-cancel-button=\"false\"\n :show-confirm-button=\"false\"\n @close=\"handleClose\"\n >\n <AssetForm mode=\"create\" @submit=\"handleSubmit\" @cancel=\"handleCancel\" />\n <template #footer />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/asset/EditAssetDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.SUCCESS_MESSAGE`' dynamic key is used'","line":31,"column":14,"nodeType":"CallExpression","endLine":31,"endColumn":45},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.ERROR_MESSAGE`' dynamic key is used'","line":35,"column":39,"nodeType":"CallExpression","endLine":35,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.TITLE`' dynamic key is used'","line":55,"column":13,"nodeType":"CallExpression","endLine":55,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { parseAPIErrorResponse } from 'dashboard/store/utils/api';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport AssetForm from './AssetForm.vue';\n\nconst props = defineProps({\n asset: {\n type: Object,\n required: true,\n },\n});\n\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\nconst store = useStore();\n\nconst dialogRef = ref(null);\nconst i18nKey = 'CAPTAIN.ASSETS.EDIT';\n\nconst handleSubmit = async updatedAsset => {\n try {\n await store.dispatch('captainAssets/update', {\n id: props.asset.id,\n payload: updatedAsset,\n });\n useAlert(t(`${i18nKey}.SUCCESS_MESSAGE`));\n dialogRef.value.close();\n } catch (error) {\n const errorMessage =\n parseAPIErrorResponse(error) || t(`${i18nKey}.ERROR_MESSAGE`);\n useAlert(errorMessage);\n }\n};\n\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleCancel = () => {\n dialogRef.value.close();\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"dialogRef\"\n :title=\"$t(`${i18nKey}.TITLE`)\"\n :description=\"$t('CAPTAIN.ASSETS.FORM_DESCRIPTION')\"\n :show-cancel-button=\"false\"\n :show-confirm-button=\"false\"\n @close=\"handleClose\"\n >\n <AssetForm\n mode=\"edit\"\n :asset=\"asset\"\n @submit=\"handleSubmit\"\n @cancel=\"handleCancel\"\n />\n <template #footer />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/assistant/AssistantForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.ASSISTANTS.FORM.${errorKey}.ERROR`' dynamic key is used'","line":55,"column":7,"nodeType":"CallExpression","endLine":55,"endColumn":53},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.FORM.${mode.toUpperCase()}`' dynamic key is used'","line":178,"column":17,"nodeType":"CallExpression","endLine":178,"endColumn":56}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Editor from 'dashboard/components-next/Editor/Editor.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n required: true,\n validator: value => ['edit', 'create'].includes(value),\n },\n assistant: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('captainAssistants/getUIFlags'),\n};\n\nconst initialState = {\n name: '',\n description: '',\n productName: '',\n featureFaq: false,\n featureMemory: false,\n featureCitation: false,\n};\n\nconst state = reactive({ ...initialState });\n\nconst validationRules = {\n name: { required, minLength: minLength(1) },\n description: { required, minLength: minLength(1) },\n productName: { required, minLength: minLength(1) },\n};\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isLoading = computed(() => formState.uiFlags.value.creatingItem);\n\nconst getErrorMessage = (field, errorKey) => {\n return v$.value[field].$error\n ? t(`CAPTAIN.ASSISTANTS.FORM.${errorKey}.ERROR`)\n : '';\n};\n\nconst formErrors = computed(() => ({\n name: getErrorMessage('name', 'NAME'),\n description: getErrorMessage('description', 'DESCRIPTION'),\n productName: getErrorMessage('productName', 'PRODUCT_NAME'),\n}));\n\nconst handleCancel = () => emit('cancel');\n\nconst prepareAssistantDetails = () => ({\n name: state.name,\n description: state.description,\n config: {\n product_name: state.productName,\n feature_faq: state.featureFaq,\n feature_memory: state.featureMemory,\n feature_citation: state.featureCitation,\n },\n});\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) {\n return;\n }\n\n emit('submit', prepareAssistantDetails());\n};\n\nconst updateStateFromAssistant = assistant => {\n if (!assistant) return;\n\n const { name, description, config } = assistant;\n\n Object.assign(state, {\n name,\n description,\n productName: config.product_name,\n featureFaq: config.feature_faq || false,\n featureMemory: config.feature_memory || false,\n featureCitation: config.feature_citation || false,\n });\n};\n\nwatch(\n () => props.assistant,\n newAssistant => {\n if (props.mode === 'edit' && newAssistant) {\n updateStateFromAssistant(newAssistant);\n }\n },\n { immediate: true }\n);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <Input\n v-model=\"state.name\"\n :label=\"t('CAPTAIN.ASSISTANTS.FORM.NAME.LABEL')\"\n :placeholder=\"t('CAPTAIN.ASSISTANTS.FORM.NAME.PLACEHOLDER')\"\n :message=\"formErrors.name\"\n :message-type=\"formErrors.name ? 'error' : 'info'\"\n />\n\n <Editor\n v-model=\"state.description\"\n :label=\"t('CAPTAIN.ASSISTANTS.FORM.DESCRIPTION.LABEL')\"\n :placeholder=\"t('CAPTAIN.ASSISTANTS.FORM.DESCRIPTION.PLACEHOLDER')\"\n :message=\"formErrors.description\"\n :message-type=\"formErrors.description ? 'error' : 'info'\"\n />\n\n <Input\n v-model=\"state.productName\"\n :label=\"t('CAPTAIN.ASSISTANTS.FORM.PRODUCT_NAME.LABEL')\"\n :placeholder=\"t('CAPTAIN.ASSISTANTS.FORM.PRODUCT_NAME.PLACEHOLDER')\"\n :message=\"formErrors.productName\"\n :message-type=\"formErrors.productName ? 'error' : 'info'\"\n />\n\n <fieldset class=\"flex flex-col gap-2.5\">\n <legend class=\"mb-3 text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.ASSISTANTS.FORM.FEATURES.TITLE') }}\n </legend>\n\n <label class=\"flex items-center gap-2\">\n <input v-model=\"state.featureFaq\" type=\"checkbox\" />\n <span class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.ASSISTANTS.FORM.FEATURES.ALLOW_CONVERSATION_FAQS') }}\n </span>\n </label>\n\n <label class=\"flex items-center gap-2\">\n <input v-model=\"state.featureMemory\" type=\"checkbox\" />\n <span class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.ASSISTANTS.FORM.FEATURES.ALLOW_MEMORIES') }}\n </span>\n </label>\n\n <label class=\"flex items-center gap-2\">\n <input v-model=\"state.featureCitation\" type=\"checkbox\" />\n <span class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.ASSISTANTS.FORM.FEATURES.ALLOW_CITATIONS') }}\n </span>\n </label>\n </fieldset>\n\n <div class=\"flex items-center justify-between w-full gap-3\">\n <Button\n type=\"button\"\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('CAPTAIN.FORM.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n type=\"submit\"\n :label=\"t(`CAPTAIN.FORM.${mode.toUpperCase()}`)\"\n class=\"w-full\"\n :is-loading=\"isLoading\"\n :disabled=\"isLoading\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/assistant/CreateAssistantDialog.vue","messages":[],"suppressedMessages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.ERROR_MESSAGE`' dynamic key is used'","line":49,"column":44,"nodeType":"CallExpression","endLine":49,"endColumn":79,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.SUCCESS_MESSAGE`' dynamic key is used'","line":62,"column":14,"nodeType":"CallExpression","endLine":62,"endColumn":51,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.ERROR_MESSAGE`' dynamic key is used'","line":66,"column":44,"nodeType":"CallExpression","endLine":66,"endColumn":79,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""},{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantBasicSettingsForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantControlItems.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantSystemSettingsForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantWebhookSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/AuthConfig.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/CreateCustomToolDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.SUCCESS_MESSAGE`' dynamic key is used'","line":49,"column":14,"nodeType":"CallExpression","endLine":49,"endColumn":51},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.ERROR_MESSAGE`' dynamic key is used'","line":53,"column":39,"nodeType":"CallExpression","endLine":53,"endColumn":74},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.TITLE`' dynamic key is used'","line":74,"column":13,"nodeType":"CallExpression","endLine":74,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { parseAPIErrorResponse } from 'dashboard/store/utils/api';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport CustomToolForm from './CustomToolForm.vue';\n\nconst props = defineProps({\n selectedTool: {\n type: Object,\n default: () => ({}),\n },\n type: {\n type: String,\n default: 'create',\n validator: value => ['create', 'edit'].includes(value),\n },\n});\n\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\nconst store = useStore();\n\nconst dialogRef = ref(null);\n\nconst updateTool = toolDetails =>\n store.dispatch('captainCustomTools/update', {\n id: props.selectedTool.id,\n ...toolDetails,\n });\n\nconst i18nKey = computed(\n () => `CAPTAIN.CUSTOM_TOOLS.${props.type.toUpperCase()}`\n);\n\nconst createTool = toolDetails =>\n store.dispatch('captainCustomTools/create', toolDetails);\n\nconst handleSubmit = async updatedTool => {\n try {\n if (props.type === 'edit') {\n await updateTool(updatedTool);\n } else {\n await createTool(updatedTool);\n }\n useAlert(t(`${i18nKey.value}.SUCCESS_MESSAGE`));\n dialogRef.value.close();\n } catch (error) {\n const errorMessage =\n parseAPIErrorResponse(error) || t(`${i18nKey.value}.ERROR_MESSAGE`);\n useAlert(errorMessage);\n }\n};\n\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleCancel = () => {\n dialogRef.value.close();\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"dialogRef\"\n width=\"2xl\"\n :title=\"$t(`${i18nKey}.TITLE`)\"\n :description=\"$t('CAPTAIN.CUSTOM_TOOLS.FORM_DESCRIPTION')\"\n :show-cancel-button=\"false\"\n :show-confirm-button=\"false\"\n @close=\"handleClose\"\n >\n <CustomToolForm\n :mode=\"type\"\n :tool=\"selectedTool\"\n @submit=\"handleSubmit\"\n @cancel=\"handleCancel\"\n />\n <template #footer />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/CustomToolCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPES.${props.authType.toUpperCase()}`' dynamic key is used'","line":76,"column":10,"nodeType":"CallExpression","endLine":78,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useToggle } from '@vueuse/core';\nimport { useI18n } from 'vue-i18n';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\n\nimport CardLayout from 'dashboard/components-next/CardLayout.vue';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Policy from 'dashboard/components/policy.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n required: true,\n },\n title: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n default: '',\n },\n authType: {\n type: String,\n default: 'none',\n },\n updatedAt: {\n type: Number,\n required: true,\n },\n createdAt: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['action']);\n\nconst { t } = useI18n();\n\nconst [showActionsDropdown, toggleDropdown] = useToggle();\n\nconst menuItems = computed(() => [\n {\n label: t('CAPTAIN.CUSTOM_TOOLS.OPTIONS.TEST_TOOL'),\n value: 'test',\n action: 'test',\n icon: 'i-lucide-play',\n },\n {\n label: t('CAPTAIN.CUSTOM_TOOLS.OPTIONS.EDIT_TOOL'),\n value: 'edit',\n action: 'edit',\n icon: 'i-lucide-pencil-line',\n },\n {\n label: t('CAPTAIN.CUSTOM_TOOLS.OPTIONS.DELETE_TOOL'),\n value: 'delete',\n action: 'delete',\n icon: 'i-lucide-trash',\n },\n]);\n\nconst timestamp = computed(() =>\n dynamicTime(props.updatedAt || props.createdAt)\n);\n\nconst handleAction = ({ action, value }) => {\n toggleDropdown(false);\n emit('action', { action, value, id: props.id });\n};\n\nconst authTypeLabel = computed(() => {\n return t(\n `CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPES.${props.authType.toUpperCase()}`\n );\n});\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <CardLayout class=\"relative\">\n <div class=\"flex relative justify-between w-full gap-1\">\n <span class=\"text-base text-n-slate-12 line-clamp-1 font-medium\">\n {{ title }}\n </span>\n <div class=\"flex items-center gap-2\">\n <Policy\n v-on-clickaway=\"() => toggleDropdown(false)\"\n :permissions=\"['administrator']\"\n class=\"relative flex items-center group\"\n >\n <Button\n icon=\"i-lucide-ellipsis-vertical\"\n color=\"slate\"\n size=\"xs\"\n class=\"rounded-md group-hover:bg-n-alpha-2\"\n @click=\"toggleDropdown()\"\n />\n <DropdownMenu\n v-if=\"showActionsDropdown\"\n :menu-items=\"menuItems\"\n class=\"mt-1 ltr:right-0 rtl:right-0 top-full\"\n @action=\"handleAction($event)\"\n />\n </Policy>\n </div>\n </div>\n <div class=\"flex items-center justify-between w-full gap-4\">\n <div class=\"flex items-center gap-3 flex-1\">\n <span\n v-if=\"description\"\n class=\"text-sm truncate text-n-slate-11 flex-1\"\n >\n {{ description }}\n </span>\n <span\n v-if=\"authType !== 'none'\"\n class=\"text-sm shrink-0 text-n-slate-11 inline-flex items-center gap-1\"\n >\n <i class=\"i-lucide-lock text-base\" />\n {{ authTypeLabel }}\n </span>\n </div>\n <span class=\"text-sm text-n-slate-11 line-clamp-1 shrink-0\">\n {{ timestamp }}\n </span>\n </div>\n </CardLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/CustomToolForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.CUSTOM_TOOLS.FORM.${errorKey}.ERROR`' dynamic key is used'","line":118,"column":7,"nodeType":"CallExpression","endLine":118,"endColumn":55},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'mode==='edit'?'CAPTAIN.FORM.EDIT':'CAPTAIN.FORM.CREATE'' dynamic key is used'","line":333,"column":11,"nodeType":"CallExpression","endLine":333,"endColumn":75}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, useTemplateRef, watch, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport TextArea from 'dashboard/components-next/textarea/TextArea.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport ParamRow from './ParamRow.vue';\nimport HeaderRow from './HeaderRow.vue';\nimport AuthConfig from './AuthConfig.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n default: 'create',\n validator: value => ['create', 'edit'].includes(value),\n },\n tool: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('captainCustomTools/getUIFlags'),\n};\n\nconst initialState = {\n title: '',\n description: '',\n endpoint_url: '',\n http_method: 'GET',\n request_template: '',\n response_template: '',\n auth_type: 'none',\n auth_config: {},\n param_schema: [],\n};\n\nconst state = reactive({ ...initialState });\nconst customHeaders = ref([]);\n\n// Populate form when in edit mode\nwatch(\n () => props.tool,\n newTool => {\n if (props.mode === 'edit' && newTool && newTool.id) {\n state.title = newTool.title || '';\n state.description = newTool.description || '';\n state.endpoint_url = newTool.endpoint_url || '';\n state.http_method = newTool.http_method || 'GET';\n state.request_template = newTool.request_template || '';\n state.response_template = newTool.response_template || '';\n state.auth_type = newTool.auth_type || 'none';\n state.auth_config = newTool.auth_config || {};\n state.param_schema = newTool.param_schema || [];\n\n // Extract headers from auth_config if present\n if (state.auth_config && state.auth_config.headers) {\n customHeaders.value = Object.entries(state.auth_config.headers).map(\n ([key, value]) => ({ key, value })\n );\n } else {\n customHeaders.value = [];\n }\n }\n },\n { immediate: true }\n);\n\nconst DEFAULT_PARAM = {\n name: '',\n type: 'string',\n description: '',\n required: false,\n};\n\nconst validationRules = {\n title: { required },\n endpoint_url: { required },\n http_method: { required },\n auth_type: { required },\n};\n\nconst httpMethodOptions = computed(() => [\n { value: 'GET', label: 'GET' },\n { value: 'POST', label: 'POST' },\n]);\n\nconst authTypeOptions = computed(() => [\n { value: 'none', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPES.NONE') },\n { value: 'bearer', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPES.BEARER') },\n { value: 'basic', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPES.BASIC') },\n {\n value: 'api_key',\n label: t('CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPES.API_KEY'),\n },\n]);\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isLoading = computed(() =>\n props.mode === 'edit'\n ? formState.uiFlags.value.updatingItem\n : formState.uiFlags.value.creatingItem\n);\n\nconst getErrorMessage = (field, errorKey) => {\n return v$.value[field].$error\n ? t(`CAPTAIN.CUSTOM_TOOLS.FORM.${errorKey}.ERROR`)\n : '';\n};\n\nconst formErrors = computed(() => ({\n title: getErrorMessage('title', 'TITLE'),\n endpoint_url: getErrorMessage('endpoint_url', 'ENDPOINT_URL'),\n}));\n\nconst paramsRef = useTemplateRef('paramsRef');\nconst headersRef = useTemplateRef('headersRef');\n\nconst isParamsValid = () => {\n if (!paramsRef.value || paramsRef.value.length === 0) {\n return true;\n }\n return paramsRef.value.every(param => param.validate());\n};\n\nconst isHeadersValid = () => {\n if (!headersRef.value || headersRef.value.length === 0) {\n return true;\n }\n return headersRef.value.every(header => header.validate());\n};\n\nconst removeParam = index => {\n state.param_schema.splice(index, 1);\n};\n\nconst addParam = () => {\n state.param_schema.push({ ...DEFAULT_PARAM });\n};\n\nconst removeHeader = index => {\n customHeaders.value.splice(index, 1);\n};\n\nconst addHeader = () => {\n customHeaders.value.push({ key: '', value: '' });\n};\n\nconst handleCancel = () => emit('cancel');\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid || !isParamsValid() || !isHeadersValid()) {\n return;\n }\n\n // Merge headers into auth_config\n if (customHeaders.value.length > 0) {\n const headersHash = customHeaders.value.reduce((acc, header) => {\n acc[header.key] = header.value;\n return acc;\n }, {});\n state.auth_config = { ...state.auth_config, headers: headersHash };\n } else {\n // If headers exist in auth_config but are removed in UI, we need to remove them\n // but preserve other auth keys.\n const { headers, ...restIdx } = state.auth_config;\n state.auth_config = restIdx;\n }\n\n emit('submit', state);\n};\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <form\n class=\"flex flex-col px-4 -mx-4 gap-4 max-h-[calc(100vh-200px)] overflow-y-scroll\"\n @submit.prevent=\"handleSubmit\"\n >\n <Input\n v-model=\"state.title\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.TITLE.LABEL')\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.TITLE.PLACEHOLDER')\"\n :message=\"formErrors.title\"\n :message-type=\"formErrors.title ? 'error' : 'info'\"\n />\n\n <TextArea\n v-model=\"state.description\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.DESCRIPTION.LABEL')\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.DESCRIPTION.PLACEHOLDER')\"\n :rows=\"2\"\n />\n\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-1 w-28\">\n <label class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.HTTP_METHOD.LABEL') }}\n </label>\n <ComboBox\n v-model=\"state.http_method\"\n :options=\"httpMethodOptions\"\n class=\"[&>div>button]:bg-n-alpha-black2 [&_li]:font-mono [&_button]:font-mono [&>div>button]:outline-offset-[-1px]\"\n />\n </div>\n <Input\n v-model=\"state.endpoint_url\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.ENDPOINT_URL.LABEL')\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.ENDPOINT_URL.PLACEHOLDER')\"\n :message=\"formErrors.endpoint_url\"\n :message-type=\"formErrors.endpoint_url ? 'error' : 'info'\"\n class=\"flex-1\"\n />\n </div>\n\n <div class=\"flex flex-col gap-1\">\n <label class=\"mb-0.5 text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.AUTH_TYPE.LABEL') }}\n </label>\n <ComboBox\n v-model=\"state.auth_type\"\n :options=\"authTypeOptions\"\n class=\"[&>div>button]:bg-n-alpha-black2\"\n />\n </div>\n\n <AuthConfig\n v-model:auth-config=\"state.auth_config\"\n :auth-type=\"state.auth_type\"\n />\n\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.HEADERS.LABEL') }}\n </label>\n <p class=\"text-xs text-n-slate-11 -mt-1\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.HEADERS.HELP_TEXT') }}\n </p>\n <ul v-if=\"customHeaders.length > 0\" class=\"grid gap-2 list-none\">\n <HeaderRow\n v-for=\"(header, index) in customHeaders\"\n :key=\"index\"\n ref=\"headersRef\"\n v-model:header-key=\"header.key\"\n v-model:header-value=\"header.value\"\n @remove=\"removeHeader(index)\"\n />\n </ul>\n <Button\n type=\"button\"\n sm\n ghost\n blue\n icon=\"i-lucide-plus\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.ADD_HEADER')\"\n @click=\"addHeader\"\n />\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAMETERS.LABEL') }}\n </label>\n <p class=\"text-xs text-n-slate-11 -mt-1\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAMETERS.HELP_TEXT') }}\n </p>\n <ul v-if=\"state.param_schema.length > 0\" class=\"grid gap-2 list-none\">\n <ParamRow\n v-for=\"(param, index) in state.param_schema\"\n :key=\"index\"\n ref=\"paramsRef\"\n v-model:name=\"param.name\"\n v-model:type=\"param.type\"\n v-model:description=\"param.description\"\n v-model:required=\"param.required\"\n @remove=\"removeParam(index)\"\n />\n </ul>\n <Button\n type=\"button\"\n sm\n ghost\n blue\n icon=\"i-lucide-plus\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.ADD_PARAMETER')\"\n @click=\"addParam\"\n />\n </div>\n\n <TextArea\n v-if=\"state.http_method === 'POST'\"\n v-model=\"state.request_template\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.REQUEST_TEMPLATE.LABEL')\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.REQUEST_TEMPLATE.PLACEHOLDER')\"\n :rows=\"4\"\n class=\"[&_textarea]:font-mono\"\n />\n\n <TextArea\n v-model=\"state.response_template\"\n :label=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.RESPONSE_TEMPLATE.LABEL')\"\n :placeholder=\"\n t('CAPTAIN.CUSTOM_TOOLS.FORM.RESPONSE_TEMPLATE.PLACEHOLDER')\n \"\n :rows=\"4\"\n class=\"[&_textarea]:font-mono\"\n />\n\n <div class=\"flex gap-3 justify-between items-center w-full\">\n <Button\n type=\"button\"\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('CAPTAIN.FORM.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n type=\"submit\"\n :label=\"\n t(mode === 'edit' ? 'CAPTAIN.FORM.EDIT' : 'CAPTAIN.FORM.CREATE')\n \"\n class=\"w-full\"\n :is-loading=\"isLoading\"\n :disabled=\"isLoading\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/HeaderRow.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.CUSTOM_TOOLS.FORM.ERRORS.${validationError}`' dynamic key is used'","line":78,"column":10,"nodeType":"CallExpression","endLine":78,"endColumn":66}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, defineModel, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Input from 'dashboard/components-next/input/Input.vue';\n\nconst emit = defineEmits(['remove']);\nconst { t } = useI18n();\nconst showErrors = ref(false);\n\nconst headerKey = defineModel('headerKey', {\n type: String,\n required: true,\n});\n\nconst headerValue = defineModel('headerValue', {\n type: String,\n required: true,\n});\n\nconst validationError = computed(() => {\n if (!headerKey.value || headerKey.value.trim() === '') {\n return 'HEADER_KEY_REQUIRED';\n }\n if (!headerValue.value || headerValue.value.trim() === '') {\n return 'HEADER_VALUE_REQUIRED';\n }\n return null;\n});\n\nwatch([headerKey, headerValue], () => {\n showErrors.value = false;\n});\n\nconst validate = () => {\n showErrors.value = true;\n return !validationError.value;\n};\n\ndefineExpose({ validate });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <li class=\"list-none\">\n <div\n class=\"flex items-start gap-2 p-3 rounded-lg border border-n-weak bg-n-alpha-2\"\n :class=\"{\n 'animate-wiggle border-n-ruby-9': showErrors && validationError,\n }\"\n >\n <div class=\"flex flex-col flex-1 gap-3\">\n <div class=\"grid grid-cols-2 gap-2\">\n <Input\n v-model=\"headerKey\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.HEADER_KEY.PLACEHOLDER')\"\n />\n <Input\n v-model=\"headerValue\"\n :placeholder=\"\n t('CAPTAIN.CUSTOM_TOOLS.FORM.HEADER_VALUE.PLACEHOLDER')\n \"\n />\n </div>\n </div>\n <Button\n solid\n slate\n icon=\"i-lucide-trash\"\n class=\"flex-shrink-0\"\n @click.stop=\"emit('remove')\"\n />\n </div>\n <span\n v-if=\"showErrors && validationError\"\n class=\"block mt-1 text-sm text-n-ruby-11\"\n >\n {{ t(`CAPTAIN.CUSTOM_TOOLS.FORM.ERRORS.${validationError}`) }}\n </span>\n </li>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/ParamRow.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.CUSTOM_TOOLS.FORM.ERRORS.${validationError}`' dynamic key is used'","line":111,"column":10,"nodeType":"CallExpression","endLine":111,"endColumn":66}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, defineModel, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\nimport Checkbox from 'dashboard/components-next/checkbox/Checkbox.vue';\n\nconst emit = defineEmits(['remove']);\nconst { t } = useI18n();\nconst showErrors = ref(false);\n\nconst name = defineModel('name', {\n type: String,\n required: true,\n});\n\nconst type = defineModel('type', {\n type: String,\n required: true,\n});\n\nconst description = defineModel('description', {\n type: String,\n default: '',\n});\n\nconst required = defineModel('required', {\n type: Boolean,\n default: false,\n});\n\nconst paramTypeOptions = computed(() => [\n { value: 'string', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_TYPES.STRING') },\n { value: 'number', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_TYPES.NUMBER') },\n {\n value: 'boolean',\n label: t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_TYPES.BOOLEAN'),\n },\n { value: 'array', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_TYPES.ARRAY') },\n { value: 'object', label: t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_TYPES.OBJECT') },\n]);\n\nconst validationError = computed(() => {\n if (!name.value || name.value.trim() === '') {\n return 'PARAM_NAME_REQUIRED';\n }\n return null;\n});\n\nwatch([name, type, description, required], () => {\n showErrors.value = false;\n});\n\nconst validate = () => {\n showErrors.value = true;\n return !validationError.value;\n};\n\ndefineExpose({ validate });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <li class=\"list-none\">\n <div\n class=\"flex items-start gap-2 p-3 rounded-lg border border-n-weak bg-n-alpha-2\"\n :class=\"{\n 'animate-wiggle border-n-ruby-9': showErrors && validationError,\n }\"\n >\n <div class=\"flex flex-col flex-1 gap-3\">\n <div class=\"grid grid-cols-3 gap-2\">\n <Input\n v-model=\"name\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_NAME.PLACEHOLDER')\"\n class=\"col-span-2\"\n />\n <ComboBox\n v-model=\"type\"\n :options=\"paramTypeOptions\"\n :placeholder=\"t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_TYPE.PLACEHOLDER')\"\n class=\"[&>div>button]:bg-n-alpha-black2\"\n />\n </div>\n <Input\n v-model=\"description\"\n :placeholder=\"\n t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_DESCRIPTION.PLACEHOLDER')\n \"\n />\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <Checkbox v-model=\"required\" />\n <span class=\"text-sm text-n-slate-11\">\n {{ t('CAPTAIN.CUSTOM_TOOLS.FORM.PARAM_REQUIRED.LABEL') }}\n </span>\n </label>\n </div>\n <Button\n solid\n slate\n icon=\"i-lucide-trash\"\n class=\"flex-shrink-0\"\n @click.stop=\"emit('remove')\"\n />\n </div>\n <span\n v-if=\"showErrors && validationError\"\n class=\"block mt-1 text-sm text-n-ruby-11\"\n >\n {{ t(`CAPTAIN.CUSTOM_TOOLS.FORM.ERRORS.${validationError}`) }}\n </span>\n </li>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/customTool/ToolTestDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/document/CreateDocumentDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.SUCCESS_MESSAGE`' dynamic key is used'","line":29,"column":14,"nodeType":"CallExpression","endLine":29,"endColumn":45},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.ERROR_MESSAGE`' dynamic key is used'","line":33,"column":39,"nodeType":"CallExpression","endLine":33,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.TITLE`' dynamic key is used'","line":53,"column":13,"nodeType":"CallExpression","endLine":53,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { parseAPIErrorResponse } from 'dashboard/store/utils/api';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport DocumentForm from './DocumentForm.vue';\n\ndefineProps({\n assistantId: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\nconst store = useStore();\n\nconst dialogRef = ref(null);\n\nconst i18nKey = 'CAPTAIN.DOCUMENTS.CREATE';\n\nconst handleSubmit = async newDocument => {\n try {\n await store.dispatch('captainDocuments/create', newDocument);\n useAlert(t(`${i18nKey}.SUCCESS_MESSAGE`));\n dialogRef.value.close();\n } catch (error) {\n const errorMessage =\n parseAPIErrorResponse(error) || t(`${i18nKey}.ERROR_MESSAGE`);\n useAlert(errorMessage);\n }\n};\n\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleCancel = () => {\n dialogRef.value.close();\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"dialogRef\"\n :title=\"$t(`${i18nKey}.TITLE`)\"\n :description=\"$t('CAPTAIN.DOCUMENTS.FORM_DESCRIPTION')\"\n :show-cancel-button=\"false\"\n :show-confirm-button=\"false\"\n @close=\"handleClose\"\n >\n <DocumentForm\n :assistant-id=\"assistantId\"\n @submit=\"handleSubmit\"\n @cancel=\"handleCancel\"\n />\n <template #footer />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/document/DocumentForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.DOCUMENTS.FORM.${errorKey}.ERROR`' dynamic key is used'","line":64,"column":7,"nodeType":"CallExpression","endLine":64,"endColumn":52}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, ref, nextTick } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { minLength, requiredIf, url } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ComboBox from 'dashboard/components-next/combobox/ComboBox.vue';\n\nconst props = defineProps({\n assistantId: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\n\nconst MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB\n\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('captainDocuments/getUIFlags'),\n};\n\nconst initialState = {\n name: '',\n url: '',\n documentType: 'url',\n pdfFile: null,\n};\n\nconst state = reactive({ ...initialState });\nconst fileInputRef = ref(null);\n\nconst validationRules = {\n url: {\n required: requiredIf(() => state.documentType === 'url'),\n url: requiredIf(() => state.documentType === 'url' && url),\n minLength: requiredIf(() => state.documentType === 'url' && minLength(1)),\n },\n pdfFile: {\n required: requiredIf(() => state.documentType === 'pdf'),\n },\n};\n\nconst documentTypeOptions = [\n { value: 'url', label: t('CAPTAIN.DOCUMENTS.FORM.TYPE.URL') },\n { value: 'pdf', label: t('CAPTAIN.DOCUMENTS.FORM.TYPE.PDF') },\n];\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isLoading = computed(() => formState.uiFlags.value.creatingItem);\n\nconst hasPdfFileError = computed(() => v$.value.pdfFile.$error);\n\nconst getErrorMessage = (field, errorKey) => {\n return v$.value[field].$error\n ? t(`CAPTAIN.DOCUMENTS.FORM.${errorKey}.ERROR`)\n : '';\n};\n\nconst formErrors = computed(() => ({\n url: getErrorMessage('url', 'URL'),\n pdfFile: getErrorMessage('pdfFile', 'PDF_FILE'),\n}));\n\nconst handleCancel = () => emit('cancel');\n\nconst handleFileChange = event => {\n const file = event.target.files[0];\n if (file) {\n if (file.type !== 'application/pdf') {\n useAlert(t('CAPTAIN.DOCUMENTS.FORM.PDF_FILE.INVALID_TYPE'));\n event.target.value = '';\n return;\n }\n if (file.size > MAX_FILE_SIZE) {\n // 10MB\n useAlert(t('CAPTAIN.DOCUMENTS.FORM.PDF_FILE.TOO_LARGE'));\n event.target.value = '';\n return;\n }\n state.pdfFile = file;\n state.name = file.name.replace(/\\.pdf$/i, '');\n }\n};\n\nconst openFileDialog = () => {\n // Use nextTick to ensure the ref is available\n nextTick(() => {\n if (fileInputRef.value) {\n fileInputRef.value.click();\n }\n });\n};\n\nconst prepareDocumentDetails = () => {\n const formData = new FormData();\n formData.append('document[assistant_id]', props.assistantId);\n\n if (state.documentType === 'url') {\n formData.append('document[external_link]', state.url);\n formData.append('document[name]', state.name || state.url);\n } else {\n formData.append('document[pdf_file]', state.pdfFile);\n formData.append(\n 'document[name]',\n state.name || state.pdfFile.name.replace('.pdf', '')\n );\n // No need to send external_link for PDF - it's auto-generated in the backend\n }\n\n return formData;\n};\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) {\n return;\n }\n\n emit('submit', prepareDocumentDetails());\n};\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <div class=\"flex flex-col gap-1\">\n <label\n for=\"documentType\"\n class=\"mb-0.5 text-sm font-medium text-n-slate-12\"\n >\n {{ t('CAPTAIN.DOCUMENTS.FORM.TYPE.LABEL') }}\n </label>\n <ComboBox\n id=\"documentType\"\n v-model=\"state.documentType\"\n :options=\"documentTypeOptions\"\n class=\"[&>div>button]:bg-n-alpha-black2\"\n />\n </div>\n\n <Input\n v-if=\"state.documentType === 'url'\"\n v-model=\"state.url\"\n :label=\"t('CAPTAIN.DOCUMENTS.FORM.URL.LABEL')\"\n :placeholder=\"t('CAPTAIN.DOCUMENTS.FORM.URL.PLACEHOLDER')\"\n :message=\"formErrors.url\"\n :message-type=\"formErrors.url ? 'error' : 'info'\"\n />\n\n <div v-if=\"state.documentType === 'pdf'\" class=\"flex flex-col gap-2\">\n <label class=\"text-sm font-medium text-n-slate-12\">\n {{ t('CAPTAIN.DOCUMENTS.FORM.PDF_FILE.LABEL') }}\n </label>\n <div class=\"relative\">\n <input\n ref=\"fileInputRef\"\n type=\"file\"\n accept=\".pdf\"\n class=\"hidden\"\n @change=\"handleFileChange\"\n />\n <Button\n type=\"button\"\n :color=\"hasPdfFileError ? 'ruby' : 'slate'\"\n :variant=\"hasPdfFileError ? 'outline' : 'solid'\"\n class=\"!w-full !h-auto !justify-between !py-4\"\n @click=\"openFileDialog\"\n >\n <template #default>\n <div class=\"flex gap-2 items-center\">\n <div\n class=\"flex justify-center items-center w-10 h-10 rounded-lg bg-n-slate-3\"\n >\n <i class=\"text-xl i-ph-file-pdf text-n-slate-11\" />\n </div>\n <div class=\"flex flex-col flex-1 gap-1 items-start\">\n <p class=\"m-0 text-sm font-medium text-n-slate-12\">\n {{\n state.pdfFile\n ? state.pdfFile.name\n : t('CAPTAIN.DOCUMENTS.FORM.PDF_FILE.CHOOSE_FILE')\n }}\n </p>\n <p class=\"m-0 text-xs text-n-slate-11\">\n {{\n state.pdfFile\n ? `${(state.pdfFile.size / 1024 / 1024).toFixed(2)} MB`\n : t('CAPTAIN.DOCUMENTS.FORM.PDF_FILE.HELP_TEXT')\n }}\n </p>\n </div>\n </div>\n\n <i class=\"i-lucide-upload text-n-slate-11\" />\n </template>\n </Button>\n </div>\n <p v-if=\"formErrors.pdfFile\" class=\"text-xs text-n-ruby-9\">\n {{ formErrors.pdfFile }}\n </p>\n </div>\n\n <Input\n v-model=\"state.name\"\n :label=\"t('CAPTAIN.DOCUMENTS.FORM.NAME.LABEL')\"\n :placeholder=\"t('CAPTAIN.DOCUMENTS.FORM.NAME.PLACEHOLDER')\"\n />\n\n <div class=\"flex gap-3 justify-between items-center w-full\">\n <Button\n type=\"button\"\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('CAPTAIN.FORM.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n type=\"submit\"\n :label=\"t('CAPTAIN.FORM.CREATE')\"\n class=\"w-full\"\n :is-loading=\"isLoading\"\n :disabled=\"isLoading\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/document/LimitBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/document/RelatedResponses.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/AssistantPageEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/CustomToolsPageEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/DocumentPageEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/InboxPageEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/ResponsePageEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/emptyStates/captainEmptyStateContent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/inbox/ConnectInboxDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.SUCCESS_MESSAGE`' dynamic key is used'","line":40,"column":14,"nodeType":"CallExpression","endLine":40,"endColumn":51},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.ERROR_MESSAGE`' dynamic key is used'","line":43,"column":44,"nodeType":"CallExpression","endLine":43,"endColumn":79},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.TITLE`' dynamic key is used'","line":64,"column":13,"nodeType":"CallExpression","endLine":64,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport ConnectInboxForm from './ConnectInboxForm.vue';\n\nconst props = defineProps({\n assistantId: {\n type: Number,\n required: true,\n },\n type: {\n type: String,\n default: 'create',\n },\n inbox: {\n type: Object,\n default: null,\n },\n});\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\nconst store = useStore();\n\nconst dialogRef = ref(null);\nconst connectForm = ref(null);\n\nconst i18nKey = computed(() =>\n props.type === 'edit' ? 'CAPTAIN.INBOXES.EDIT' : 'CAPTAIN.INBOXES.CREATE'\n);\n\nconst handleSubmit = async payload => {\n try {\n const action =\n props.type === 'edit' ? 'captainInboxes/update' : 'captainInboxes/create';\n await store.dispatch(action, payload);\n useAlert(t(`${i18nKey.value}.SUCCESS_MESSAGE`));\n dialogRef.value.close();\n } catch (error) {\n const errorMessage = error?.message || t(`${i18nKey.value}.ERROR_MESSAGE`);\n useAlert(errorMessage);\n }\n};\n\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleCancel = () => {\n dialogRef.value.close();\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"dialogRef\"\n :type=\"type\"\n :title=\"$t(`${i18nKey}.TITLE`)\"\n :description=\"$t('CAPTAIN.INBOXES.FORM_DESCRIPTION')\"\n :show-cancel-button=\"false\"\n :show-confirm-button=\"false\"\n @close=\"handleClose\"\n >\n <ConnectInboxForm\n ref=\"connectForm\"\n :assistant-id=\"assistantId\"\n :inbox=\"inbox\"\n @submit=\"handleSubmit\"\n @cancel=\"handleCancel\"\n />\n <template #footer />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/inbox/ConnectInboxForm.vue","messages":[],"suppressedMessages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.INBOXES.FORM.${errorKey}.ERROR`' dynamic key is used'","line":119,"column":7,"nodeType":"CallExpression","endLine":119,"endColumn":50,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/response/CreateResponseDialog.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.SUCCESS_MESSAGE`' dynamic key is used'","line":54,"column":14,"nodeType":"CallExpression","endLine":54,"endColumn":51},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey.value}.ERROR_MESSAGE`' dynamic key is used'","line":58,"column":35,"nodeType":"CallExpression","endLine":58,"endColumn":70},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKey}.TITLE`' dynamic key is used'","line":78,"column":13,"nodeType":"CallExpression","endLine":78,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\n\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport ResponseForm from './ResponseForm.vue';\n\nconst props = defineProps({\n selectedResponse: {\n type: Object,\n default: () => ({}),\n },\n type: {\n type: String,\n default: 'create',\n validator: value => ['create', 'edit'].includes(value),\n },\n});\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\nconst store = useStore();\nconst route = useRoute();\n\nconst dialogRef = ref(null);\nconst responseForm = ref(null);\n\nconst updateResponse = responseDetails =>\n store.dispatch('captainResponses/update', {\n id: props.selectedResponse.id,\n ...responseDetails,\n });\n\nconst i18nKey = computed(() => `CAPTAIN.RESPONSES.${props.type.toUpperCase()}`);\n\nconst createResponse = responseDetails =>\n store.dispatch('captainResponses/create', responseDetails);\n\nconst handleSubmit = async updatedResponse => {\n try {\n if (props.type === 'edit') {\n await updateResponse({\n ...updatedResponse,\n assistant_id: route.params.assistantId,\n });\n } else {\n await createResponse({\n ...updatedResponse,\n assistant_id: route.params.assistantId,\n });\n }\n useAlert(t(`${i18nKey.value}.SUCCESS_MESSAGE`));\n dialogRef.value.close();\n } catch (error) {\n const errorMessage =\n error?.response?.message || t(`${i18nKey.value}.ERROR_MESSAGE`);\n useAlert(errorMessage);\n }\n};\n\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleCancel = () => {\n dialogRef.value.close();\n};\n\ndefineExpose({ dialogRef });\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <Dialog\n ref=\"dialogRef\"\n :title=\"$t(`${i18nKey}.TITLE`)\"\n :description=\"$t('CAPTAIN.RESPONSES.FORM_DESCRIPTION')\"\n :show-cancel-button=\"false\"\n :show-confirm-button=\"false\"\n @close=\"handleClose\"\n >\n <ResponseForm\n ref=\"responseForm\"\n :mode=\"type\"\n :response=\"selectedResponse\"\n @submit=\"handleSubmit\"\n @cancel=\"handleCancel\"\n />\n <template #footer />\n </Dialog>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/response/LimitBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/response/ResponseForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.RESPONSES.FORM.${errorKey}.ERROR`' dynamic key is used'","line":49,"column":7,"nodeType":"CallExpression","endLine":49,"endColumn":52},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CAPTAIN.FORM.${mode.toUpperCase()}`' dynamic key is used'","line":125,"column":17,"nodeType":"CallExpression","endLine":125,"endColumn":56}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { useMapGetter } from 'dashboard/composables/store';\n\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport Editor from 'dashboard/components-next/Editor/Editor.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n required: true,\n validator: value => ['edit', 'create'].includes(value),\n },\n response: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst emit = defineEmits(['submit', 'cancel']);\nconst { t } = useI18n();\n\nconst formState = {\n uiFlags: useMapGetter('captainResponses/getUIFlags'),\n};\n\nconst initialState = {\n question: '',\n answer: '',\n};\n\nconst state = reactive({ ...initialState });\n\nconst validationRules = {\n question: { required, minLength: minLength(1) },\n answer: { required, minLength: minLength(1) },\n};\n\nconst v$ = useVuelidate(validationRules, state);\n\nconst isLoading = computed(() => formState.uiFlags.value.creatingItem);\n\nconst getErrorMessage = (field, errorKey) => {\n return v$.value[field].$error\n ? t(`CAPTAIN.RESPONSES.FORM.${errorKey}.ERROR`)\n : '';\n};\n\nconst formErrors = computed(() => ({\n question: getErrorMessage('question', 'QUESTION'),\n answer: getErrorMessage('answer', 'ANSWER'),\n}));\n\nconst handleCancel = () => emit('cancel');\n\nconst prepareDocumentDetails = () => ({\n question: state.question,\n answer: state.answer,\n});\n\nconst handleSubmit = async () => {\n const isFormValid = await v$.value.$validate();\n if (!isFormValid) {\n return;\n }\n\n emit('submit', prepareDocumentDetails());\n};\n\nconst updateStateFromResponse = response => {\n if (!response) return;\n\n const { question, answer } = response;\n\n Object.assign(state, {\n question,\n answer,\n });\n};\n\nwatch(\n () => props.response,\n newResponse => {\n if (props.mode === 'edit' && newResponse) {\n updateStateFromResponse(newResponse);\n }\n },\n { immediate: true }\n);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <form class=\"flex flex-col gap-4\" @submit.prevent=\"handleSubmit\">\n <Input\n v-model=\"state.question\"\n :label=\"t('CAPTAIN.RESPONSES.FORM.QUESTION.LABEL')\"\n :placeholder=\"t('CAPTAIN.RESPONSES.FORM.QUESTION.PLACEHOLDER')\"\n :message=\"formErrors.question\"\n :message-type=\"formErrors.question ? 'error' : 'info'\"\n />\n <Editor\n v-model=\"state.answer\"\n :label=\"t('CAPTAIN.RESPONSES.FORM.ANSWER.LABEL')\"\n :placeholder=\"t('CAPTAIN.RESPONSES.FORM.ANSWER.PLACEHOLDER')\"\n :message=\"formErrors.answer\"\n :max-length=\"10000\"\n :message-type=\"formErrors.answer ? 'error' : 'info'\"\n />\n <div class=\"flex items-center justify-between w-full gap-3\">\n <Button\n type=\"button\"\n variant=\"faded\"\n color=\"slate\"\n :label=\"t('CAPTAIN.FORM.CANCEL')\"\n class=\"w-full bg-n-alpha-2 text-n-blue-text hover:bg-n-alpha-3\"\n @click=\"handleCancel\"\n />\n <Button\n type=\"submit\"\n :label=\"t(`CAPTAIN.FORM.${mode.toUpperCase()}`)\"\n class=\"w-full\"\n :is-loading=\"isLoading\"\n :disabled=\"isLoading\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/settings/SettingsHeader.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/settings/SettingsHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/pageComponents/switcher/AssistantSwitcher.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/reservations/CreateReservationModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/reservations/EditReservationDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/reservations/ReservationBoardColumn.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/captain/reservations/ReservationCard.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-unused-emit-declarations","severity":2,"message":"`cancel` is defined as emit but never used.","line":27,"column":3,"nodeType":"Literal","messageId":"unused","endLine":27,"endColumn":11,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-emit-declarations","severity":2,"message":"`viewConversation` is defined as emit but never used.","line":28,"column":3,"nodeType":"Literal","messageId":"unused","endLine":28,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/changelog-card/GroupedStackedChangelogCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/changelog-card/GroupedStackedChangelogCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/changelog-card/StackedChangelogCard.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/changelog-card/StackedChangelogCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/checkbox/Checkbox.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Default:' is used","line":16,"column":17,"nodeType":null,"endLine":16,"endColumn":25,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,467],"text":"<i18n>\n{\n \"en\": {\n \"Default:\": \"Default:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>{{$t('Default:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Checked:' is used","line":21,"column":17,"nodeType":null,"endLine":21,"endColumn":25,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,623],"text":"<i18n>\n{\n \"en\": {\n \"Checked:\": \"Checked:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>Default:</span>\n <Checkbox v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>{{$t('Checked:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Indeterminate:' is used","line":26,"column":17,"nodeType":null,"endLine":26,"endColumn":31,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,785],"text":"<i18n>\n{\n \"en\": {\n \"Indeterminate:\": \"Indeterminate:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>Default:</span>\n <Checkbox v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Checked:</span>\n <Checkbox v-model=\"checkedValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>{{$t('Indeterminate:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Indeterminate disabled:' is used","line":31,"column":17,"nodeType":null,"endLine":31,"endColumn":40,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,976],"text":"<i18n>\n{\n \"en\": {\n \"Indeterminate disabled:\": \"Indeterminate disabled:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>Default:</span>\n <Checkbox v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Checked:</span>\n <Checkbox v-model=\"checkedValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>{{$t('Indeterminate disabled:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Disabled:' is used","line":36,"column":17,"nodeType":null,"endLine":36,"endColumn":26,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1162],"text":"<i18n>\n{\n \"en\": {\n \"Disabled:\": \"Disabled:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>Default:</span>\n <Checkbox v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Checked:</span>\n <Checkbox v-model=\"checkedValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate disabled:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate disabled />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>{{$t('Disabled:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Disabled Checked:' is used","line":41,"column":17,"nodeType":null,"endLine":41,"endColumn":34,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1336],"text":"<i18n>\n{\n \"en\": {\n \"Disabled Checked:\": \"Disabled Checked:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>Default:</span>\n <Checkbox v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Checked:</span>\n <Checkbox v-model=\"checkedValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate disabled:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate disabled />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Disabled:</span>\n <Checkbox v-model=\"defaultValue\" disabled />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>{{$t('Disabled Checked:')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport Checkbox from './Checkbox.vue';\nimport { ref } from 'vue';\n\nconst defaultValue = ref(false);\nconst isChecked = ref(false);\nconst checkedValue = ref(true);\nconst indeterminateValue = ref(true);\n</script>\n\n<template>\n <Story title=\"Components/Checkbox\" :layout=\"{ type: 'grid', width: '250px' }\">\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <span>Default:</span>\n <Checkbox v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Checked:</span>\n <Checkbox v-model=\"checkedValue\" />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Indeterminate disabled:</span>\n <Checkbox v-model=\"indeterminateValue\" indeterminate disabled />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Disabled:</span>\n <Checkbox v-model=\"defaultValue\" disabled />\n </div>\n\n <div class=\"flex items-center justify-between gap-4\">\n <span>Disabled Checked:</span>\n <Checkbox v-model=\"isChecked\" disabled />\n </div>\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/checkbox/Checkbox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/colorpicker/ColorPicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/combobox/ComboBox.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Selected value: ' is used","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":41,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,598],"text":"<i18n>\n{\n \"en\": {\n \"Selected value: \": \"Selected value: \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport ComboBox from './ComboBox.vue';\n\nconst options = [\n { value: 1, label: 'Option 1' },\n { value: 2, label: 'Option 2' },\n { value: 3, label: 'Option 3' },\n { value: 4, label: 'Option 4' },\n { value: 5, label: 'Option 5' },\n];\nconst selectedValue = ref('');\n</script>\n\n<template>\n <Story title=\"Components/ComboBox\" :layout=\"{ type: 'grid', width: '300px' }\">\n <Variant title=\"Default\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <ComboBox v-model=\"selectedValue\" :options=\"options\" />\n <p class=\"mt-2\">{{$t('Selected value: ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport ComboBox from './ComboBox.vue';\n\nconst options = [\n { value: 1, label: 'Option 1' },\n { value: 2, label: 'Option 2' },\n { value: 3, label: 'Option 3' },\n { value: 4, label: 'Option 4' },\n { value: 5, label: 'Option 5' },\n];\nconst selectedValue = ref('');\n</script>\n\n<template>\n <Story title=\"Components/ComboBox\" :layout=\"{ type: 'grid', width: '300px' }\">\n <Variant title=\"Default\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <ComboBox v-model=\"selectedValue\" :options=\"options\" />\n <p class=\"mt-2\">Selected value: {{ selectedValue }}</p>\n </div>\n </Variant>\n\n <Variant title=\"Disabled\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <ComboBox :options=\"options\" disabled />\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/combobox/ComboBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/combobox/TagMultiSelectComboBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/combobox/TagMultiSelectComboxBox.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Selected values: ' is used","line":25,"column":25,"nodeType":null,"endLine":25,"endColumn":42,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,708],"text":"<i18n>\n{\n \"en\": {\n \"Selected values: \": \"Selected values: \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport TagMultiSelectComboBox from './TagMultiSelectComboBox.vue';\n\nconst options = [\n { value: 1, label: 'Option 1' },\n { value: 2, label: 'Option 2' },\n { value: 3, label: 'Option 3' },\n { value: 4, label: 'Option 4' },\n { value: 5, label: 'Option 5' },\n];\nconst selectedValues = ref([]);\n\nconst preselectedValues = ref([1, 2]);\n</script>\n\n<template>\n <Story\n title=\"Components/TagMultiSelectComboBox\"\n :layout=\"{ type: 'grid', width: '300px' }\"\n >\n <Variant title=\"Default\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <TagMultiSelectComboBox v-model=\"selectedValues\" :options=\"options\" />\n <p class=\"mt-2\">{{$t('Selected values: ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport TagMultiSelectComboBox from './TagMultiSelectComboBox.vue';\n\nconst options = [\n { value: 1, label: 'Option 1' },\n { value: 2, label: 'Option 2' },\n { value: 3, label: 'Option 3' },\n { value: 4, label: 'Option 4' },\n { value: 5, label: 'Option 5' },\n];\nconst selectedValues = ref([]);\n\nconst preselectedValues = ref([1, 2]);\n</script>\n\n<template>\n <Story\n title=\"Components/TagMultiSelectComboBox\"\n :layout=\"{ type: 'grid', width: '300px' }\"\n >\n <Variant title=\"Default\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <TagMultiSelectComboBox v-model=\"selectedValues\" :options=\"options\" />\n <p class=\"mt-2\">Selected values: {{ selectedValues }}</p>\n </div>\n </Variant>\n\n <Variant title=\"With Preselected Values\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <TagMultiSelectComboBox\n v-model=\"preselectedValues\"\n :options=\"options\"\n placeholder=\"Select multiple options\"\n />\n </div>\n </Variant>\n\n <Variant title=\"Disabled\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <TagMultiSelectComboBox :options=\"options\" disabled />\n </div>\n </Variant>\n\n <Variant title=\"With Error\">\n <div class=\"w-full p-4 bg-n-background h-80\">\n <TagMultiSelectComboBox\n :options=\"options\"\n has-error\n message=\"This field is required\"\n />\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/content-templates/ContentTemplateParser.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/Copilot.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/Copilot.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotAgentMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotAssistantMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotEmptyState.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'opt.prompt' dynamic key is used'","line":58,"column":25,"nodeType":"CallExpression","endLine":58,"endColumn":38},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'prompt.label' dynamic key is used'","line":102,"column":20,"nodeType":"CallExpression","endLine":102,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport Icon from '../icon/Icon.vue';\n\ndefineProps({\n hasAssistants: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits(['useSuggestion']);\nconst { t } = useI18n();\nconst route = useRoute();\n\nconst routePromptMap = {\n conversations: [\n {\n label: 'CAPTAIN.COPILOT.PROMPTS.SUMMARIZE.LABEL',\n prompt: 'CAPTAIN.COPILOT.PROMPTS.SUMMARIZE.CONTENT',\n },\n {\n label: 'CAPTAIN.COPILOT.PROMPTS.SUGGEST.LABEL',\n prompt: 'CAPTAIN.COPILOT.PROMPTS.SUGGEST.CONTENT',\n },\n {\n label: 'CAPTAIN.COPILOT.PROMPTS.RATE.LABEL',\n prompt: 'CAPTAIN.COPILOT.PROMPTS.RATE.CONTENT',\n },\n ],\n dashboard: [\n {\n label: 'CAPTAIN.COPILOT.PROMPTS.HIGH_PRIORITY.LABEL',\n prompt: 'CAPTAIN.COPILOT.PROMPTS.HIGH_PRIORITY.CONTENT',\n },\n {\n label: 'CAPTAIN.COPILOT.PROMPTS.LIST_CONTACTS.LABEL',\n prompt: 'CAPTAIN.COPILOT.PROMPTS.LIST_CONTACTS.CONTENT',\n },\n ],\n};\n\nconst getCurrentRoute = () => {\n const path = route.path;\n if (path.includes('/conversations')) return 'conversations';\n if (path.includes('/dashboard')) return 'dashboard';\n return 'dashboard';\n};\n\nconst promptOptions = computed(() => {\n const currentRoute = getCurrentRoute();\n return routePromptMap[currentRoute] || routePromptMap.conversations;\n});\n\nconst handleSuggestion = opt => {\n emit('useSuggestion', t(opt.prompt));\n};\n</script>\n\n<template>\n <div class=\"flex-1 flex flex-col gap-6 px-2\">\n <div class=\"flex flex-col space-y-4 py-4\">\n <Icon icon=\"i-woot-captain\" class=\"text-n-slate-9 text-4xl\" />\n <div class=\"space-y-1\">\n <h3 class=\"text-base font-medium text-n-slate-12 leading-8\">\n {{ $t('CAPTAIN.COPILOT.PANEL_TITLE') }}\n </h3>\n <p class=\"text-sm text-n-slate-11 leading-6\">\n {{ $t('CAPTAIN.COPILOT.KICK_OFF_MESSAGE') }}\n </p>\n </div>\n </div>\n <div v-if=\"!hasAssistants\" class=\"w-full space-y-2\">\n <p class=\"text-sm text-n-slate-11 leading-6\">\n {{ $t('CAPTAIN.ASSISTANTS.NO_ASSISTANTS_AVAILABLE') }}\n </p>\n <router-link\n :to=\"{\n name: 'captain_assistants_create_index',\n params: {\n accountId: route.params.accountId,\n },\n }\"\n class=\"text-n-slate-11 underline hover:text-n-slate-12\"\n >\n {{ $t('CAPTAIN.ASSISTANTS.ADD_NEW') }}\n </router-link>\n </div>\n <div v-else class=\"w-full space-y-2\">\n <span class=\"text-xs text-n-slate-10 block\">\n {{ $t('CAPTAIN.COPILOT.TRY_THESE_PROMPTS') }}\n </span>\n <div class=\"space-y-1\">\n <button\n v-for=\"prompt in promptOptions\"\n :key=\"prompt.label\"\n class=\"w-full px-3 py-2 rounded-md border border-n-weak bg-n-slate-2 text-n-slate-11 flex items-center justify-between hover:bg-n-slate-3 transition-colors\"\n @click=\"handleSuggestion(prompt)\"\n >\n <span>{{ t(prompt.label) }}</span>\n <Icon icon=\"i-lucide-chevron-right\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotLauncher.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotLoader.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotLoader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotThinkingBlock.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotThinkingGroup.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/CopilotThinkingGroup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/copilot/ToggleCopilotAssistant.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dialog/Dialog.story.vue","messages":[],"suppressedMessages":[{"ruleId":"no-unused-vars","severity":2,"message":"'dialog' is defined but never used.","line":26,"column":19,"nodeType":"Identifier","messageId":"unusedVar","endLine":26,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dialog/Dialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/DropdownMenu.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/DropdownMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/DropdownPrimitives.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/DropdownBody.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/DropdownContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/DropdownItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/DropdownSection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/DropdownSeparator.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/dropdown-menu/base/provider.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/feature-spotlight/FeatureSpotlight.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/feature-spotlight/FeatureSpotlight.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/feature-spotlight/FeatureSpotlightPopover.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/feature-spotlight/FeatureSpotlightPopover.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/ActiveFilterPreview.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/ActiveFilterPreview.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/ConditionRow.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/ConditionRow.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`FILTER.ERRORS.${validationError}`' dynamic key is used'","line":206,"column":10,"nodeType":"CallExpression","endLine":206,"endColumn":47}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, defineModel, h, watch, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Button from 'next/button/Button.vue';\nimport Input from 'dashboard/components-next/input/Input.vue';\nimport FilterSelect from './inputs/FilterSelect.vue';\nimport MultiSelect from './inputs/MultiSelect.vue';\nimport SingleSelect from './inputs/SingleSelect.vue';\n\nimport { useSnakeCase } from 'dashboard/composables/useTransformKeys';\nimport { validateSingleFilter } from 'dashboard/helper/validations.js';\n\n// filterTypes: import('vue').ComputedRef<FilterType[]>\nconst { filterTypes } = defineProps({\n showQueryOperator: { type: Boolean, default: false },\n filterTypes: { type: Array, required: true },\n});\n\nconst emit = defineEmits(['remove']);\nconst { t } = useI18n();\nconst showErrors = ref(false);\n\nconst attributeKey = defineModel('attributeKey', {\n type: String,\n required: true,\n});\n\nconst values = defineModel('values', {\n type: [String, Number, Array, Object],\n required: true,\n});\n\nconst filterOperator = defineModel('filterOperator', {\n type: String,\n required: true,\n});\n\nconst queryOperator = defineModel('queryOperator', {\n type: String,\n required: false,\n default: undefined,\n validator: value => ['and', 'or'].includes(value),\n});\n\nconst getFilterFromFilterTypes = key =>\n filterTypes.find(filterObj => filterObj.attributeKey === key);\n\nconst currentFilter = computed(() =>\n getFilterFromFilterTypes(attributeKey.value)\n);\n\nconst getOperator = (filter, selectedOperator) => {\n const operatorFromOptions = filter.filterOperators.find(\n operator => operator.value === selectedOperator\n );\n\n if (!operatorFromOptions) {\n return filter.filterOperators[0];\n }\n\n return operatorFromOptions;\n};\n\nconst currentOperator = computed(() =>\n getOperator(currentFilter.value, filterOperator.value)\n);\n\nconst getInputType = (operator, filter) =>\n operator.inputOverride ?? filter.inputType;\n\nconst inputType = computed(() =>\n getInputType(currentOperator.value, currentFilter.value)\n);\n\nconst queryOperatorOptions = computed(() => {\n return [\n {\n label: t(`FILTER.QUERY_DROPDOWN_LABELS.AND`),\n value: 'and',\n icon: h('span', { class: 'i-lucide-ampersands !text-n-blue-text' }),\n },\n {\n label: t(`FILTER.QUERY_DROPDOWN_LABELS.OR`),\n value: 'or',\n icon: h('span', { class: 'i-woot-logic-or !text-n-blue-text' }),\n },\n ];\n});\n\nconst booleanOptions = computed(() => [\n { id: true, name: t('FILTER.ATTRIBUTE_LABELS.TRUE') },\n { id: false, name: t('FILTER.ATTRIBUTE_LABELS.FALSE') },\n]);\n\nconst validationError = computed(() => {\n // TOOD: Migrate validateSingleFilter to use camelcase and then remove useSnakeCase here too\n return validateSingleFilter(\n useSnakeCase({\n attributeKey: attributeKey.value,\n filterOperator: filterOperator.value,\n values: values.value,\n })\n );\n});\n\nconst inputFieldType = computed(() => {\n if (inputType.value === 'date') return 'date';\n if (inputType.value === 'number') return 'number';\n return 'text';\n});\n\nconst resetModelOnAttributeKeyChange = newAttributeKey => {\n /**\n * Resets the filter values and operator when the attribute key changes. This ensures that\n * the values and operator remain compatible with the new attribute type. For example,\n * switching from a text field to a multi-select should reset the value from '' (empty string)\n * to an empty array.\n */\n const filter = getFilterFromFilterTypes(newAttributeKey);\n const newOperator = getOperator(filter, filterOperator.value);\n const newInputType = getInputType(newOperator, filter);\n if (newInputType === 'multiSelect') {\n values.value = [];\n } else if (['searchSelect', 'booleanSelect'].includes(newInputType)) {\n values.value = {};\n } else {\n values.value = '';\n }\n filterOperator.value = newOperator.value;\n};\n\nwatch([attributeKey, values, filterOperator], () => {\n showErrors.value = false;\n});\n\nconst validate = () => {\n showErrors.value = true;\n return !validationError.value;\n};\n\ndefineExpose({ validate });\n</script>\n\n<template>\n <li class=\"list-none\">\n <div\n class=\"flex items-center gap-2 rounded-md\"\n :class=\"{\n 'animate-wiggle': showErrors && validationError,\n }\"\n >\n <FilterSelect\n v-if=\"showQueryOperator\"\n v-model=\"queryOperator\"\n variant=\"faded\"\n hide-icon\n class=\"text-sm\"\n :options=\"queryOperatorOptions\"\n />\n <FilterSelect\n v-model=\"attributeKey\"\n variant=\"faded\"\n :options=\"filterTypes\"\n @update:model-value=\"resetModelOnAttributeKeyChange\"\n />\n <FilterSelect\n v-model=\"filterOperator\"\n variant=\"ghost\"\n :options=\"currentFilter.filterOperators\"\n />\n <template v-if=\"currentOperator.hasInput\">\n <MultiSelect\n v-if=\"inputType === 'multiSelect'\"\n v-model=\"values\"\n :options=\"currentFilter.options\"\n />\n <SingleSelect\n v-else-if=\"inputType === 'searchSelect'\"\n v-model=\"values\"\n :options=\"currentFilter.options\"\n />\n <SingleSelect\n v-else-if=\"inputType === 'booleanSelect'\"\n v-model=\"values\"\n disable-search\n :options=\"booleanOptions\"\n />\n <Input\n v-else\n v-model=\"values\"\n :type=\"inputFieldType\"\n class=\"[&>input]:h-8 [&>input]:py-1.5 [&>input]:outline-offset-0\"\n :placeholder=\"t('FILTER.INPUT_PLACEHOLDER')\"\n />\n </template>\n <Button\n sm\n solid\n slate\n icon=\"i-lucide-trash\"\n class=\"flex-shrink-0\"\n @click.stop=\"emit('remove')\"\n />\n </div>\n <span v-if=\"showErrors && validationError\" class=\"text-sm text-n-ruby-11\">\n {{ t(`FILTER.ERRORS.${validationError}`) }}\n </span>\n </li>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/ContactsFilter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/ConversationFilter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/SaveCustomView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/contactProvider.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/fixtures/filterTypes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/helper/filterHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/helper/filterHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/inputs/FilterSelect.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/inputs/FilterSelect.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/inputs/MultiSelect.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/inputs/MultiSelect.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/inputs/SingleSelect.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/inputs/SingleSelect.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/operators.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`FILTER.OPERATOR_LABELS.${value}`' dynamic key is used'","line":81,"column":16,"nodeType":"CallExpression","endLine":81,"endColumn":52}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed, h } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\n/**\n * @typedef {Object} FilterOperations\n * @property {string} EQUAL_TO - Equals comparison\n * @property {string} NOT_EQUAL_TO - Not equals comparison\n * @property {string} IS_PRESENT - Present check\n * @property {string} IS_NOT_PRESENT - Not present check\n * @property {string} CONTAINS - Contains check\n * @property {string} DOES_NOT_CONTAIN - Does not contain check\n * @property {string} IS_GREATER_THAN - Greater than comparison\n * @property {string} IS_LESS_THAN - Less than comparison\n * @property {string} DAYS_BEFORE - Days before check\n * @property {string} STARTS_WITH - Starts with check\n */\n\n/**\n * @typedef {Object} Operator\n * @property {string} value - Operator value from FILTER_OPS\n * @property {string} label - Translated display label\n * @property {import('vue').VNode} icon - Vue icon component instance\n * @property {string|null} inputOverride - Input field type override\n * @property {boolean} hasInput - Whether operator requires an input value\n */\n\nconst FILTER_OPS = {\n EQUAL_TO: 'equal_to',\n NOT_EQUAL_TO: 'not_equal_to',\n IS_PRESENT: 'is_present',\n IS_NOT_PRESENT: 'is_not_present',\n CONTAINS: 'contains',\n DOES_NOT_CONTAIN: 'does_not_contain',\n IS_GREATER_THAN: 'is_greater_than',\n IS_LESS_THAN: 'is_less_than',\n DAYS_BEFORE: 'days_before',\n STARTS_WITH: 'starts_with',\n};\n\nconst NO_INPUT_OPTS = [FILTER_OPS.IS_PRESENT, FILTER_OPS.IS_NOT_PRESENT];\n\nconst OPS_INPUT_OVERRIDE = {\n [FILTER_OPS.DAYS_BEFORE]: 'plainText',\n};\n\n/**\n * @type {Record<string, string>}\n */\nconst filterOperatorIcon = {\n [FILTER_OPS.EQUAL_TO]: 'i-ph-equals-bold',\n [FILTER_OPS.NOT_EQUAL_TO]: 'i-ph-not-equals-bold',\n [FILTER_OPS.IS_PRESENT]: 'i-ph-member-of-bold',\n [FILTER_OPS.IS_NOT_PRESENT]: 'i-ph-not-member-of-bold',\n [FILTER_OPS.CONTAINS]: 'i-ph-superset-of-bold',\n [FILTER_OPS.DOES_NOT_CONTAIN]: 'i-ph-not-superset-of-bold',\n [FILTER_OPS.IS_GREATER_THAN]: 'i-ph-greater-than-bold',\n [FILTER_OPS.IS_LESS_THAN]: 'i-ph-less-than-bold',\n [FILTER_OPS.DAYS_BEFORE]: 'i-ph-calendar-minus-bold',\n [FILTER_OPS.STARTS_WITH]: 'i-ph-caret-line-right-bold',\n};\n\n/**\n * Vue composable providing access to filter operators and related functionality\n * @returns {Object} Collection of operators and utility functions\n * @property {import('vue').ComputedRef<Record<string, Operator>>} operators - All available operators\n * @property {import('vue').ComputedRef<Operator[]>} equalityOperators - Equality comparison operators\n * @property {import('vue').ComputedRef<Operator[]>} presenceOperators - Presence check operators\n * @property {import('vue').ComputedRef<Operator[]>} containmentOperators - Containment check operators\n * @property {import('vue').ComputedRef<Operator[]>} comparisonOperators - Numeric comparison operators\n * @property {import('vue').ComputedRef<Operator[]>} dateOperators - Date-specific operators\n * @property {(key: 'list'|'text'|'number'|'link'|'date'|'checkbox') => Operator[]} getOperatorTypes - Get operators for a field type\n */\nexport function useOperators() {\n const { t } = useI18n();\n\n /** @type {import('vue').ComputedRef<Record<string, Operator>>} */\n const operators = computed(() => {\n return Object.values(FILTER_OPS).reduce((acc, value) => {\n acc[value] = {\n value,\n label: t(`FILTER.OPERATOR_LABELS.${value}`),\n hasInput: !NO_INPUT_OPTS.includes(value),\n inputOverride: OPS_INPUT_OVERRIDE[value] || null,\n icon: h('span', {\n class: `${filterOperatorIcon[value]} !text-n-blue-text`,\n }),\n };\n return acc;\n }, {});\n });\n\n /** @type {import('vue').ComputedRef<Array<Operator>>} */\n const equalityOperators = computed(() => [\n operators.value[FILTER_OPS.EQUAL_TO],\n operators.value[FILTER_OPS.NOT_EQUAL_TO],\n ]);\n\n /** @type {import('vue').ComputedRef<Array<Operator>>} */\n const presenceOperators = computed(() => [\n operators.value[FILTER_OPS.EQUAL_TO],\n operators.value[FILTER_OPS.NOT_EQUAL_TO],\n operators.value[FILTER_OPS.IS_PRESENT],\n operators.value[FILTER_OPS.IS_NOT_PRESENT],\n ]);\n\n /** @type {import('vue').ComputedRef<Array<Operator>>} */\n const containmentOperators = computed(() => [\n operators.value[FILTER_OPS.EQUAL_TO],\n operators.value[FILTER_OPS.NOT_EQUAL_TO],\n operators.value[FILTER_OPS.CONTAINS],\n operators.value[FILTER_OPS.DOES_NOT_CONTAIN],\n ]);\n\n /** @type {import('vue').ComputedRef<Array<Operator>>} */\n const comparisonOperators = computed(() => [\n operators.value[FILTER_OPS.EQUAL_TO],\n operators.value[FILTER_OPS.NOT_EQUAL_TO],\n operators.value[FILTER_OPS.IS_PRESENT],\n operators.value[FILTER_OPS.IS_NOT_PRESENT],\n operators.value[FILTER_OPS.IS_GREATER_THAN],\n operators.value[FILTER_OPS.IS_LESS_THAN],\n ]);\n\n /** @type {import('vue').ComputedRef<Array<Operator>>} */\n const dateOperators = computed(() => [\n operators.value[FILTER_OPS.IS_GREATER_THAN],\n operators.value[FILTER_OPS.IS_LESS_THAN],\n operators.value[FILTER_OPS.DAYS_BEFORE],\n ]);\n\n /**\n * Get operator types based on key\n * @param {string} key - Type of operator to get\n * @returns {Array<Operator>}\n */\n const getOperatorTypes = key => {\n switch (key) {\n case 'list':\n return equalityOperators.value;\n case 'text':\n return containmentOperators.value;\n case 'number':\n return equalityOperators.value;\n case 'link':\n return equalityOperators.value;\n case 'date':\n return comparisonOperators.value;\n case 'checkbox':\n return equalityOperators.value;\n default:\n return equalityOperators.value;\n }\n };\n\n return {\n operators,\n equalityOperators,\n presenceOperators,\n containmentOperators,\n comparisonOperators,\n dateOperators,\n getOperatorTypes,\n };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/filter/provider.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.${id}.TEXT`' dynamic key is used'","line":96,"column":17,"nodeType":"CallExpression","endLine":96,"endColumn":67},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONVERSATION.PRIORITY.OPTIONS.${id.toUpperCase()}`' dynamic key is used'","line":112,"column":17,"nodeType":"CallExpression","endLine":112,"endColumn":71}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed, h } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useOperators } from './operators';\nimport { useMapGetter } from 'dashboard/composables/store.js';\nimport { useChannelIcon } from 'next/icon/provider';\nimport {\n buildAttributesFilterTypes,\n CONVERSATION_ATTRIBUTES,\n} from './helper/filterHelper';\nimport countries from 'shared/constants/countries.js';\nimport languages from 'dashboard/components/widgets/conversation/advancedFilterItems/languages.js';\n\n/**\n * @typedef {Object} FilterOption\n * @property {string|number} id\n * @property {string} name\n * @property {import('vue').VNode} [icon]\n */\n\n/**\n * @typedef {Object} FilterOperator\n * @property {string} value\n * @property {string} label\n * @property {string} icon\n * @property {boolean} hasInput\n */\n\n/**\n * @typedef {Object} FilterType\n * @property {string} attributeKey - The attribute key\n * @property {string} value - This is a proxy for the attribute key used in FilterSelect\n * @property {string} attributeName - The attribute name used to display on the UI\n * @property {string} label - This is a proxy for the attribute name used in FilterSelect\n * @property {'multiSelect'|'searchSelect'|'plainText'|'date'|'booleanSelect'} inputType - The input type for the attribute\n * @property {FilterOption[]} [options] - The options available for the attribute if it is a multiSelect or singleSelect type\n * @property {'text'|'number'} dataType\n * @property {FilterOperator[]} filterOperators - The operators available for the attribute\n * @property {'standard'|'additional'|'customAttributes'} attributeModel\n */\n\n/**\n * @typedef {Object} FilterGroup\n * @property {string} name\n * @property {FilterType[]} attributes\n */\n\n/**\n * Composable that provides conversation filtering context\n * @returns {{ filterTypes: import('vue').ComputedRef<FilterType[]>, filterGroups: import('vue').ComputedRef<FilterGroup[]> }}\n */\nexport function useConversationFilterContext() {\n const { t } = useI18n();\n\n const conversationAttributes = useMapGetter(\n 'attributes/getConversationAttributes'\n );\n\n const labels = useMapGetter('labels/getLabels');\n const agents = useMapGetter('agents/getAgents');\n const inboxes = useMapGetter('inboxes/getInboxes');\n const teams = useMapGetter('teams/getTeams');\n const campaigns = useMapGetter('campaigns/getAllCampaigns');\n\n const {\n equalityOperators,\n presenceOperators,\n containmentOperators,\n dateOperators,\n getOperatorTypes,\n } = useOperators();\n\n /**\n * @type {import('vue').ComputedRef<FilterType[]>}\n */\n const customFilterTypes = computed(() =>\n buildAttributesFilterTypes(\n conversationAttributes.value,\n getOperatorTypes,\n 'conversation'\n )\n );\n\n /**\n * @type {import('vue').ComputedRef<FilterType[]>}\n */\n const filterTypes = computed(() => [\n {\n attributeKey: CONVERSATION_ATTRIBUTES.STATUS,\n value: CONVERSATION_ATTRIBUTES.STATUS,\n attributeName: t('FILTER.ATTRIBUTES.STATUS'),\n label: t('FILTER.ATTRIBUTES.STATUS'),\n inputType: 'multiSelect',\n options: ['open', 'resolved', 'pending', 'snoozed', 'all'].map(id => {\n return {\n id,\n name: t(`CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.${id}.TEXT`),\n };\n }),\n dataType: 'text',\n filterOperators: equalityOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.PRIORITY,\n value: CONVERSATION_ATTRIBUTES.PRIORITY,\n attributeName: t('FILTER.ATTRIBUTES.PRIORITY'),\n label: t('FILTER.ATTRIBUTES.PRIORITY'),\n inputType: 'multiSelect',\n options: ['low', 'medium', 'high', 'urgent'].map(id => {\n return {\n id,\n name: t(`CONVERSATION.PRIORITY.OPTIONS.${id.toUpperCase()}`),\n };\n }),\n dataType: 'text',\n filterOperators: equalityOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.ASSIGNEE_ID,\n value: CONVERSATION_ATTRIBUTES.ASSIGNEE_ID,\n attributeName: t('FILTER.ATTRIBUTES.ASSIGNEE_NAME'),\n label: t('FILTER.ATTRIBUTES.ASSIGNEE_NAME'),\n inputType: 'searchSelect',\n options: agents.value.map(agent => {\n return {\n id: agent.id,\n name: agent.name,\n };\n }),\n dataType: 'text',\n filterOperators: presenceOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.INBOX_ID,\n value: CONVERSATION_ATTRIBUTES.INBOX_ID,\n attributeName: t('FILTER.ATTRIBUTES.INBOX_NAME'),\n label: t('FILTER.ATTRIBUTES.INBOX_NAME'),\n inputType: 'searchSelect',\n options: inboxes.value.map(inbox => {\n return {\n ...inbox,\n icon: useChannelIcon(inbox).value,\n };\n }),\n dataType: 'text',\n filterOperators: presenceOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.TEAM_ID,\n value: CONVERSATION_ATTRIBUTES.TEAM_ID,\n attributeName: t('FILTER.ATTRIBUTES.TEAM_NAME'),\n label: t('FILTER.ATTRIBUTES.TEAM_NAME'),\n inputType: 'searchSelect',\n options: teams.value,\n dataType: 'number',\n filterOperators: presenceOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.DISPLAY_ID,\n value: CONVERSATION_ATTRIBUTES.DISPLAY_ID,\n attributeName: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),\n label: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),\n inputType: 'number',\n dataType: 'number',\n filterOperators: containmentOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.CAMPAIGN_ID,\n value: CONVERSATION_ATTRIBUTES.CAMPAIGN_ID,\n attributeName: t('FILTER.ATTRIBUTES.CAMPAIGN_NAME'),\n label: t('FILTER.ATTRIBUTES.CAMPAIGN_NAME'),\n inputType: 'searchSelect',\n options: campaigns.value.map(campaign => ({\n id: campaign.id,\n name: campaign.title,\n })),\n dataType: 'number',\n filterOperators: presenceOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.LABELS,\n value: CONVERSATION_ATTRIBUTES.LABELS,\n attributeName: t('FILTER.ATTRIBUTES.LABELS'),\n label: t('FILTER.ATTRIBUTES.LABELS'),\n inputType: 'multiSelect',\n options: labels.value.map(label => {\n return {\n id: label.title,\n name: label.title,\n icon: h('span', {\n class: `rounded-full`,\n style: {\n backgroundColor: label.color,\n height: '6px',\n width: '6px',\n },\n }),\n };\n }),\n dataType: 'text',\n filterOperators: presenceOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.BROWSER_LANGUAGE,\n value: CONVERSATION_ATTRIBUTES.BROWSER_LANGUAGE,\n attributeName: t('FILTER.ATTRIBUTES.BROWSER_LANGUAGE'),\n label: t('FILTER.ATTRIBUTES.BROWSER_LANGUAGE'),\n inputType: 'searchSelect',\n options: languages,\n dataType: 'text',\n filterOperators: equalityOperators.value,\n attributeModel: 'additional',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.COUNTRY_CODE,\n value: CONVERSATION_ATTRIBUTES.COUNTRY_CODE,\n attributeName: t('FILTER.ATTRIBUTES.COUNTRY_NAME'),\n label: t('FILTER.ATTRIBUTES.COUNTRY_NAME'),\n inputType: 'searchSelect',\n options: countries,\n dataType: 'text',\n filterOperators: equalityOperators.value,\n attributeModel: 'additional',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.REFERER,\n value: CONVERSATION_ATTRIBUTES.REFERER,\n attributeName: t('FILTER.ATTRIBUTES.REFERER_LINK'),\n label: t('FILTER.ATTRIBUTES.REFERER_LINK'),\n inputType: 'plainText',\n dataType: 'text',\n filterOperators: containmentOperators.value,\n attributeModel: 'additional',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.CREATED_AT,\n value: CONVERSATION_ATTRIBUTES.CREATED_AT,\n attributeName: t('FILTER.ATTRIBUTES.CREATED_AT'),\n label: t('FILTER.ATTRIBUTES.CREATED_AT'),\n inputType: 'date',\n dataType: 'text',\n filterOperators: dateOperators.value,\n attributeModel: 'standard',\n },\n {\n attributeKey: CONVERSATION_ATTRIBUTES.LAST_ACTIVITY_AT,\n value: CONVERSATION_ATTRIBUTES.LAST_ACTIVITY_AT,\n attributeName: t('FILTER.ATTRIBUTES.LAST_ACTIVITY'),\n label: t('FILTER.ATTRIBUTES.LAST_ACTIVITY'),\n inputType: 'date',\n dataType: 'text',\n filterOperators: dateOperators.value,\n attributeModel: 'standard',\n },\n ...customFilterTypes.value,\n ]);\n\n return { filterTypes };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/flag/Flag.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/flag/story/Flag.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Squared flags\n ' is used","line":34,"column":52,"nodeType":null,"endLine":36,"endColumn":7},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Squared flags\n ' is used","line":56,"column":52,"nodeType":null,"endLine":58,"endColumn":7}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport Flag from '../Flag.vue';\nimport countries from 'shared/constants/countries';\n\nconst BasicTemplate = {\n components: { Flag },\n props: {\n country: {\n type: String,\n default: 'us',\n },\n squared: {\n type: Boolean,\n default: false,\n },\n },\n template: `\n <div class=\"flex items-center gap-4 p-4 border rounded border-n-weak\">\n <Flag :country=\"country\" :squared=\"squared\" />\n </div>\n `,\n};\n\nconst SizeVariants = {\n components: { Flag },\n setup() {\n const isSquared = ref(false);\n return { isSquared };\n },\n template: `\n <div class=\"flex flex-col gap-4\">\n <label class=\"flex items-center gap-2\">\n <input type=\"checkbox\" v-model=\"isSquared\">\n Squared flags\n </label>\n <div class=\"flex items-center gap-4 p-4 border rounded border-n-weak\">\n <Flag country=\"in\" class=\"!size-4\" :squared=\"isSquared\" />\n <Flag country=\"in\" class=\"!size-6\" :squared=\"isSquared\" />\n <Flag country=\"in\" class=\"!size-8\" :squared=\"isSquared\" />\n <Flag country=\"in\" class=\"!size-10\" :squared=\"isSquared\" />\n </div>\n </div>\n `,\n};\n\nconst AllFlags = {\n components: { Flag },\n setup() {\n const isSquared = ref(false);\n return { countries, isSquared };\n },\n template: `\n <div class=\"flex flex-col gap-4\">\n <label class=\"flex items-center gap-2\">\n <input type=\"checkbox\" v-model=\"isSquared\">\n Squared flags\n </label>\n\n <div class=\"grid grid-cols-2 gap-4 p-4 border rounded border-n-strong md:grid-cols-3 lg:grid-cols-4\">\n <div \n v-for=\"country in countries\" \n :key=\"country.id\"\n class=\"flex items-center gap-2 px-4 py-2 border rounded border-n-strong\"\n >\n <Flag \n :country=\"country.id\" \n :squared=\"isSquared\"\n class=\"size-6\" \n />\n <span class=\"text-sm\">{{ country.name }}</span>\n </div>\n </div>\n </div>\n `,\n};\n</script>\n\n<template>\n <Story title=\"Components/Flag\">\n <Variant title=\"Basic Usage\">\n <BasicTemplate country=\"us\" :squared=\"false\" />\n </Variant>\n\n <Variant title=\"Size Variants\">\n <SizeVariants />\n </Variant>\n\n <Variant title=\"All Flags\">\n <AllFlags />\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/ChannelIcon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/FileIcon.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/FileIcon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/Icon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/Logo.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/provider.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/icon/specs/provider.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/inline-input/InlineInput.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/inline-input/InlineInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/input/DurationInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/input/Input.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/input/Input.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/input/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/Message.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'createdAt' of property found, but never used.","line":121,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":121,"endColumn":12,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'currentUserId' of property found, but never used.","line":122,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":122,"endColumn":16,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'inboxId' of property found, but never used.","line":124,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":124,"endColumn":10,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'inReplyTo' of property found, but never used.","line":126,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":126,"endColumn":12,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'sourceId' of property found, but never used.","line":132,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":132,"endColumn":11,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/MessageError.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/MessageList.vue","messages":[],"suppressedMessages":[{"ruleId":"no-unused-expressions","severity":2,"message":"Expected an assignment or function call and instead saw an expression.","line":139,"column":3,"nodeType":"ExpressionStatement","messageId":"unusedExpression","endLine":139,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/MessageMeta.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/MessageStatus.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/TranslationToggle.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Activity.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Audio.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Base.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CHAT_LIST.ATTACHMENTS.${fileType}.CONTENT`' dynamic key is used'","line":90,"column":12,"nodeType":"CallExpression","endLine":90,"endColumn":58}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\n\nimport MessageMeta from '../MessageMeta.vue';\n\nimport { emitter } from 'shared/helpers/mitt';\nimport { useMessageContext } from '../provider.js';\nimport { useI18n } from 'vue-i18n';\n\nimport { BUS_EVENTS } from 'shared/constants/busEvents';\nimport { MESSAGE_VARIANTS, ORIENTATION } from '../constants';\n\nconst props = defineProps({\n hideMeta: { type: Boolean, default: false },\n});\n\nconst { variant, orientation, inReplyTo, shouldGroupWithNext } =\n useMessageContext();\nconst { t } = useI18n();\n\nconst varaintBaseMap = {\n [MESSAGE_VARIANTS.AGENT]: 'bg-n-solid-blue text-n-slate-12',\n [MESSAGE_VARIANTS.PRIVATE]:\n 'bg-n-solid-amber text-n-amber-12 [&_.prosemirror-mention-node]:font-semibold',\n [MESSAGE_VARIANTS.USER]: 'bg-n-slate-4 text-n-slate-12',\n [MESSAGE_VARIANTS.ACTIVITY]: 'bg-n-alpha-1 text-n-slate-11 text-sm',\n [MESSAGE_VARIANTS.BOT]: 'bg-n-solid-iris text-n-slate-12',\n [MESSAGE_VARIANTS.TEMPLATE]: 'bg-n-solid-iris text-n-slate-12',\n [MESSAGE_VARIANTS.ERROR]: 'bg-n-ruby-4 text-n-ruby-12',\n [MESSAGE_VARIANTS.EMAIL]: 'w-full',\n [MESSAGE_VARIANTS.UNSUPPORTED]:\n 'bg-n-solid-amber/70 border border-dashed border-n-amber-12 text-n-amber-12',\n};\n\nconst orientationMap = {\n [ORIENTATION.LEFT]:\n 'left-bubble rounded-xl ltr:rounded-bl-sm rtl:rounded-br-sm',\n [ORIENTATION.RIGHT]:\n 'right-bubble rounded-xl ltr:rounded-br-sm rtl:rounded-bl-sm',\n [ORIENTATION.CENTER]: 'rounded-md',\n};\n\nconst flexOrientationClass = computed(() => {\n const map = {\n [ORIENTATION.LEFT]: 'justify-start',\n [ORIENTATION.RIGHT]: 'justify-end',\n [ORIENTATION.CENTER]: 'justify-center',\n };\n\n return map[orientation.value];\n});\n\nconst messageClass = computed(() => {\n const classToApply = [varaintBaseMap[variant.value]];\n\n if (variant.value !== MESSAGE_VARIANTS.ACTIVITY) {\n classToApply.push(orientationMap[orientation.value]);\n } else {\n classToApply.push('rounded-lg');\n }\n\n return classToApply;\n});\n\nconst scrollToMessage = () => {\n if (inReplyTo.value?.id) {\n emitter.emit(BUS_EVENTS.SCROLL_TO_MESSAGE, {\n messageId: inReplyTo.value.id,\n });\n }\n};\n\nconst shouldShowMeta = computed(\n () =>\n !props.hideMeta &&\n !shouldGroupWithNext.value &&\n variant.value !== MESSAGE_VARIANTS.ACTIVITY\n);\n\nconst replyToPreview = computed(() => {\n if (!inReplyTo.value) return '';\n\n const { content, attachments } = inReplyTo.value;\n\n if (content) return content;\n if (attachments?.length) {\n const firstAttachment = attachments[0];\n const fileType = firstAttachment.fileType ?? firstAttachment.file_type;\n\n return t(`CHAT_LIST.ATTACHMENTS.${fileType}.CONTENT`);\n }\n\n return t('CONVERSATION.REPLY_MESSAGE_NOT_FOUND');\n});\n</script>\n\n<template>\n <div\n class=\"text-sm\"\n :class=\"[\n messageClass,\n {\n 'max-w-lg': variant !== MESSAGE_VARIANTS.EMAIL,\n },\n ]\"\n >\n <div\n v-if=\"inReplyTo\"\n class=\"p-2 -mx-1 mb-2 rounded-lg cursor-pointer bg-n-alpha-black1\"\n @click=\"scrollToMessage\"\n >\n <span class=\"break-all line-clamp-2\">\n {{ replyToPreview }}\n </span>\n </div>\n <slot />\n <MessageMeta\n v-if=\"shouldShowMeta\"\n :class=\"[\n flexOrientationClass,\n variant === MESSAGE_VARIANTS.EMAIL ? 'px-3 pb-3' : '',\n variant === MESSAGE_VARIANTS.PRIVATE\n ? 'text-n-amber-12/50'\n : 'text-n-slate-11',\n ]\"\n class=\"mt-2\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/BaseAttachment.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'senderTranslationKey' dynamic key is used'","line":46,"column":15,"nodeType":"CallExpression","endLine":48,"endColumn":17}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport BaseBubble from './Base.vue';\nimport Icon from 'next/icon/Icon.vue';\nimport { useMessageContext } from '../provider.js';\n\ndefineProps({\n icon: { type: [String, Object], required: true },\n iconBgColor: { type: String, default: 'bg-n-alpha-3' },\n senderTranslationKey: { type: String, required: true },\n content: { type: String, required: true },\n title: { type: String, default: '' }, // Title can be any name, description, etc\n action: {\n type: Object,\n required: true,\n validator: action => {\n return action.label && (action.href || action.onClick);\n },\n },\n});\n\nconst { sender } = useMessageContext();\nconst { t } = useI18n();\n\nconst senderName = computed(() => {\n return sender?.value?.name || '';\n});\n</script>\n\n<template>\n <BaseBubble class=\"overflow-hidden p-3\" data-bubble-name=\"attachment\">\n <div class=\"grid gap-4 min-w-64\">\n <div class=\"grid gap-3\">\n <div\n class=\"size-8 rounded-lg grid place-content-center\"\n :class=\"iconBgColor\"\n >\n <slot name=\"icon\">\n <Icon :icon=\"icon\" class=\"text-white size-4\" />\n </slot>\n </div>\n <div class=\"space-y-1 overflow-hidden\">\n <div v-if=\"senderName\" class=\"text-n-slate-12 text-sm truncate\">\n {{\n t(senderTranslationKey, {\n sender: senderName,\n })\n }}\n </div>\n <slot>\n <div v-if=\"title\" class=\"truncate text-sm text-n-slate-12\">\n {{ title }}\n </div>\n <div v-if=\"content\" class=\"truncate text-sm text-n-slate-11\">\n {{ content }}\n </div>\n </slot>\n </div>\n </div>\n <div v-if=\"action\" class=\"mb-2\">\n <a\n v-if=\"action.href\"\n :href=\"action.href\"\n rel=\"noreferrer noopener nofollow\"\n target=\"_blank\"\n class=\"w-full block bg-n-solid-3 px-4 py-2 rounded-lg text-sm text-center border border-n-container\"\n >\n {{ action.label }}\n </a>\n <button\n v-else\n class=\"w-full bg-n-solid-3 px-4 py-2 rounded-lg text-sm text-center border border-n-container\"\n @click=\"action.onClick\"\n >\n {{ action.label }}\n </button>\n </div>\n </div>\n </BaseBubble>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/CSAT.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'rating.translationKey' dynamic key is used'","line":50,"column":12,"nodeType":"CallExpression","endLine":50,"endColumn":36}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport BaseBubble from './Base.vue';\nimport { useI18n } from 'vue-i18n';\nimport { CSAT_RATINGS, CSAT_DISPLAY_TYPES } from 'shared/constants/messages';\nimport { useMessageContext } from '../provider.js';\n\nconst { contentAttributes, content } = useMessageContext();\nconst { t } = useI18n();\n\nconst response = computed(() => {\n return contentAttributes.value?.submittedValues?.csatSurveyResponse ?? {};\n});\n\nconst isRatingSubmitted = computed(() => {\n return !!response.value.rating;\n});\n\nconst displayType = computed(() => {\n return contentAttributes.value?.displayType || CSAT_DISPLAY_TYPES.EMOJI;\n});\n\nconst isStarRating = computed(() => {\n return displayType.value === CSAT_DISPLAY_TYPES.STAR;\n});\n\nconst rating = computed(() => {\n if (isRatingSubmitted.value) {\n return CSAT_RATINGS.find(\n csatOption => csatOption.value === response.value.rating\n );\n }\n\n return null;\n});\n\nconst starRatingValue = computed(() => {\n return response.value.rating || 0;\n});\n</script>\n\n<template>\n <BaseBubble class=\"px-4 py-3\" data-bubble-name=\"csat\">\n <h4>{{ content || t('CONVERSATION.CSAT_REPLY_MESSAGE') }}</h4>\n <dl v-if=\"isRatingSubmitted\" class=\"mt-4\">\n <dt class=\"text-n-slate-11 italic\">\n {{ t('CONVERSATION.RATING_TITLE') }}\n </dt>\n <dd v-if=\"!isStarRating\">\n {{ t(rating.translationKey) }}\n </dd>\n <dd v-else class=\"flex mt-1\">\n <span v-for=\"n in 5\" :key=\"n\" class=\"text-2xl mr-1\">\n <i\n :class=\"[\n n <= starRatingValue\n ? 'i-ri-star-fill text-n-amber-9'\n : 'i-ri-star-line text-n-slate-10',\n ]\"\n />\n </span>\n </dd>\n\n <dt v-if=\"response.feedbackMessage\" class=\"text-n-slate-11 italic mt-2\">\n {{ t('CONVERSATION.FEEDBACK_TITLE') }}\n </dt>\n <dd>{{ response.feedbackMessage }}</dd>\n </dl>\n </BaseBubble>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Contact.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Dyte.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Email/EmailMeta.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n <' is used","line":81,"column":18,"nodeType":null,"endLine":82,"endColumn":15,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1963],"text":"<i18n>\n{\n \"en\": {\n \"\\n <\": \"\\n <\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>{{$t(`\n <`)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '>\n ' is used","line":82,"column":33,"nodeType":null,"endLine":83,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1994],"text":"<i18n>\n{\n \"en\": {\n \">\\n \": \">\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>\n <{{ fromEmail[0] }}{{$t(`>\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ': ' is used","line":89,"column":36,"nodeType":null,"endLine":89,"endColumn":38,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2165],"text":"<i18n>\n{\n \"en\": {\n \": \": \": \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>\n <{{ fromEmail[0] }}>\n </template>\n <template v-else>\n {{ fromEmail[0] }}\n </template>\n </div>\n <div v-if=\"toEmail.length\">\n {{ $t('EMAIL_HEADER.TO') }}{{$t(': ')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":92,"column":36,"nodeType":null,"endLine":93,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2282],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>\n <{{ fromEmail[0] }}>\n </template>\n <template v-else>\n {{ fromEmail[0] }}\n </template>\n </div>\n <div v-if=\"toEmail.length\">\n {{ $t('EMAIL_HEADER.TO') }}: {{ toEmail.join(', ') }}\n </div>\n <div v-if=\"ccEmail.length\">\n {{ $t('EMAIL_HEADER.CC') }}{{$t(`:\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":96,"column":37,"nodeType":null,"endLine":97,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2401],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>\n <{{ fromEmail[0] }}>\n </template>\n <template v-else>\n {{ fromEmail[0] }}\n </template>\n </div>\n <div v-if=\"toEmail.length\">\n {{ $t('EMAIL_HEADER.TO') }}: {{ toEmail.join(', ') }}\n </div>\n <div v-if=\"ccEmail.length\">\n {{ $t('EMAIL_HEADER.CC') }}:\n {{ ccEmail.join(', ') }}\n </div>\n <div v-if=\"bccEmail.length\">\n {{ $t('EMAIL_HEADER.BCC') }}{{$t(`:\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":100,"column":41,"nodeType":null,"endLine":101,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2517],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>\n <{{ fromEmail[0] }}>\n </template>\n <template v-else>\n {{ fromEmail[0] }}\n </template>\n </div>\n <div v-if=\"toEmail.length\">\n {{ $t('EMAIL_HEADER.TO') }}: {{ toEmail.join(', ') }}\n </div>\n <div v-if=\"ccEmail.length\">\n {{ $t('EMAIL_HEADER.CC') }}:\n {{ ccEmail.join(', ') }}\n </div>\n <div v-if=\"bccEmail.length\">\n {{ $t('EMAIL_HEADER.BCC') }}:\n {{ bccEmail.join(', ') }}\n </div>\n <div v-if=\"subject\">\n {{ $t('EMAIL_HEADER.SUBJECT') }}{{$t(`:\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { MESSAGE_STATUS } from '../../constants';\nimport { useMessageContext } from '../../provider.js';\n\nconst { contentAttributes, status, sender } = useMessageContext();\n\nconst hasError = computed(() => {\n return status.value === MESSAGE_STATUS.FAILED;\n});\n\nconst fromEmail = computed(() => {\n return contentAttributes.value?.email?.from ?? [];\n});\n\nconst toEmail = computed(() => {\n const { toEmails, email } = contentAttributes.value;\n return email?.to ?? toEmails ?? [];\n});\n\nconst ccEmail = computed(() => {\n return (\n contentAttributes.value?.ccEmails ??\n contentAttributes.value?.email?.cc ??\n []\n );\n});\n\nconst senderName = computed(() => {\n const fromEmailAddress = fromEmail.value[0] ?? '';\n const senderEmail = sender.value.email ?? '';\n\n if (!fromEmailAddress && !senderEmail) return null;\n\n // if the sender of the conversation and the sender of this particular\n // email are the same, only then we return the sender name\n if (fromEmailAddress === senderEmail) {\n return sender.value.name;\n }\n\n return null;\n});\n\nconst bccEmail = computed(() => {\n return (\n contentAttributes.value?.bccEmails ??\n contentAttributes.value?.email?.bcc ??\n []\n );\n});\n\nconst subject = computed(() => {\n return contentAttributes.value?.email?.subject ?? '';\n});\n\nconst showMeta = computed(() => {\n return (\n fromEmail.value[0] ||\n toEmail.value.length ||\n ccEmail.value.length ||\n bccEmail.value.length ||\n subject.value\n );\n});\n</script>\n\n<template>\n <section\n v-show=\"showMeta\"\n class=\"space-y-1 rtl:pl-9 ltr:pr-9 text-sm break-words\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-11'\"\n >\n <template v-if=\"showMeta\">\n <div\n v-if=\"fromEmail[0]\"\n :class=\"hasError ? 'text-n-ruby-11' : 'text-n-slate-12'\"\n >\n <template v-if=\"senderName\">\n <span>\n {{ senderName }}\n </span>\n <{{ fromEmail[0] }}>\n </template>\n <template v-else>\n {{ fromEmail[0] }}\n </template>\n </div>\n <div v-if=\"toEmail.length\">\n {{ $t('EMAIL_HEADER.TO') }}: {{ toEmail.join(', ') }}\n </div>\n <div v-if=\"ccEmail.length\">\n {{ $t('EMAIL_HEADER.CC') }}:\n {{ ccEmail.join(', ') }}\n </div>\n <div v-if=\"bccEmail.length\">\n {{ $t('EMAIL_HEADER.BCC') }}:\n {{ bccEmail.join(', ') }}\n </div>\n <div v-if=\"subject\">\n {{ $t('EMAIL_HEADER.SUBJECT') }}:\n {{ subject }}\n </div>\n </template>\n </section>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Email/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Embed.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/File.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Form.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Image.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/InstagramStory.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Location.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Template/CallToAction.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Template/Card.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Template/ListPicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Template/Media.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Template/QuickReply.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Template/Text.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Text/FormattedContent.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Text/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Unsupported.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/Video.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/bubbles/VoiceCall.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'labelKey' dynamic key is used'","line":95,"column":16,"nodeType":"CallExpression","endLine":95,"endColumn":28},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'subtextKey' dynamic key is used'","line":98,"column":16,"nodeType":"CallExpression","endLine":98,"endColumn":30}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useMessageContext } from '../provider.js';\nimport { MESSAGE_TYPES, VOICE_CALL_STATUS } from '../constants';\n\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport BaseBubble from 'next/message/bubbles/Base.vue';\n\nconst LABEL_MAP = {\n [VOICE_CALL_STATUS.IN_PROGRESS]: 'CONVERSATION.VOICE_CALL.CALL_IN_PROGRESS',\n [VOICE_CALL_STATUS.COMPLETED]: 'CONVERSATION.VOICE_CALL.CALL_ENDED',\n};\n\nconst SUBTEXT_MAP = {\n [VOICE_CALL_STATUS.RINGING]: 'CONVERSATION.VOICE_CALL.NOT_ANSWERED_YET',\n [VOICE_CALL_STATUS.COMPLETED]: 'CONVERSATION.VOICE_CALL.CALL_ENDED',\n};\n\nconst ICON_MAP = {\n [VOICE_CALL_STATUS.IN_PROGRESS]: 'i-ph-phone-call',\n [VOICE_CALL_STATUS.NO_ANSWER]: 'i-ph-phone-x',\n [VOICE_CALL_STATUS.FAILED]: 'i-ph-phone-x',\n};\n\nconst BG_COLOR_MAP = {\n [VOICE_CALL_STATUS.IN_PROGRESS]: 'bg-n-teal-9',\n [VOICE_CALL_STATUS.RINGING]: 'bg-n-teal-9 animate-pulse',\n [VOICE_CALL_STATUS.COMPLETED]: 'bg-n-slate-11',\n [VOICE_CALL_STATUS.NO_ANSWER]: 'bg-n-ruby-9',\n [VOICE_CALL_STATUS.FAILED]: 'bg-n-ruby-9',\n};\n\nconst { contentAttributes, messageType } = useMessageContext();\n\nconst data = computed(() => contentAttributes.value?.data);\nconst status = computed(() => data.value?.status?.toString());\n\nconst isOutbound = computed(() => messageType.value === MESSAGE_TYPES.OUTGOING);\nconst isFailed = computed(() =>\n [VOICE_CALL_STATUS.NO_ANSWER, VOICE_CALL_STATUS.FAILED].includes(status.value)\n);\n\nconst labelKey = computed(() => {\n if (LABEL_MAP[status.value]) return LABEL_MAP[status.value];\n if (status.value === VOICE_CALL_STATUS.RINGING) {\n return isOutbound.value\n ? 'CONVERSATION.VOICE_CALL.OUTGOING_CALL'\n : 'CONVERSATION.VOICE_CALL.INCOMING_CALL';\n }\n return isFailed.value\n ? 'CONVERSATION.VOICE_CALL.MISSED_CALL'\n : 'CONVERSATION.VOICE_CALL.INCOMING_CALL';\n});\n\nconst subtextKey = computed(() => {\n if (SUBTEXT_MAP[status.value]) return SUBTEXT_MAP[status.value];\n if (status.value === VOICE_CALL_STATUS.IN_PROGRESS) {\n return isOutbound.value\n ? 'CONVERSATION.VOICE_CALL.THEY_ANSWERED'\n : 'CONVERSATION.VOICE_CALL.YOU_ANSWERED';\n }\n return isFailed.value\n ? 'CONVERSATION.VOICE_CALL.NO_ANSWER'\n : 'CONVERSATION.VOICE_CALL.NOT_ANSWERED_YET';\n});\n\nconst iconName = computed(() => {\n if (ICON_MAP[status.value]) return ICON_MAP[status.value];\n return isOutbound.value ? 'i-ph-phone-outgoing' : 'i-ph-phone-incoming';\n});\n\nconst bgColor = computed(() => BG_COLOR_MAP[status.value] || 'bg-n-teal-9');\n</script>\n\n<template>\n <BaseBubble class=\"p-0 border-none\" hide-meta>\n <div class=\"flex overflow-hidden flex-col w-full max-w-xs\">\n <div class=\"flex gap-3 items-center p-3 w-full\">\n <div\n class=\"flex justify-center items-center rounded-full size-10 shrink-0\"\n :class=\"bgColor\"\n >\n <Icon\n class=\"size-5\"\n :icon=\"iconName\"\n :class=\"{\n 'text-n-slate-1': status === VOICE_CALL_STATUS.COMPLETED,\n 'text-white': status !== VOICE_CALL_STATUS.COMPLETED,\n }\"\n />\n </div>\n\n <div class=\"flex overflow-hidden flex-col flex-grow\">\n <span class=\"text-sm font-medium truncate text-n-slate-12\">\n {{ $t(labelKey) }}\n </span>\n <span class=\"text-xs text-n-slate-11\">\n {{ $t(subtextKey) }}\n </span>\n </div>\n </div>\n </div>\n </BaseBubble>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/chips/AttachmentChips.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/chips/Audio.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' / ' is used","line":149,"column":38,"nodeType":null,"endLine":149,"endColumn":41,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3961],"text":"<i18n>\n{\n \"en\": {\n \" / \": \" / \"\n }\n}\n</i18n>\n\n<script setup>\nimport {\n computed,\n onMounted,\n useTemplateRef,\n ref,\n getCurrentInstance,\n} from 'vue';\nimport Icon from 'next/icon/Icon.vue';\nimport { timeStampAppendedURL } from 'dashboard/helper/URLHelper';\nimport { downloadFile } from '@chatwoot/utils';\nimport { useEmitter } from 'dashboard/composables/emitter';\nimport { emitter } from 'shared/helpers/mitt';\n\nconst { attachment } = defineProps({\n attachment: {\n type: Object,\n required: true,\n },\n});\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst timeStampURL = computed(() => {\n return timeStampAppendedURL(attachment.dataUrl);\n});\n\nconst audioPlayer = useTemplateRef('audioPlayer');\n\nconst isPlaying = ref(false);\nconst isMuted = ref(false);\nconst currentTime = ref(0);\nconst duration = ref(0);\nconst playbackSpeed = ref(1);\n\nconst { uid } = getCurrentInstance();\n\nconst onLoadedMetadata = () => {\n duration.value = audioPlayer.value?.duration;\n};\n\nconst playbackSpeedLabel = computed(() => {\n return `${playbackSpeed.value}x`;\n});\n\n// There maybe a chance that the audioPlayer ref is not available\n// When the onLoadMetadata is called, so we need to set the duration\n// value when the component is mounted\nonMounted(() => {\n duration.value = audioPlayer.value?.duration;\n audioPlayer.value.playbackRate = playbackSpeed.value;\n});\n\n// Listen for global audio play events and pause if it's not this audio\nuseEmitter('pause_playing_audio', currentPlayingId => {\n if (currentPlayingId !== uid && isPlaying.value) {\n try {\n audioPlayer.value.pause();\n } catch {\n /* ignore pause errors */\n }\n isPlaying.value = false;\n }\n});\n\nconst formatTime = time => {\n if (!time || Number.isNaN(time)) return '00:00';\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n};\n\nconst toggleMute = () => {\n audioPlayer.value.muted = !audioPlayer.value.muted;\n isMuted.value = audioPlayer.value.muted;\n};\n\nconst onTimeUpdate = () => {\n currentTime.value = audioPlayer.value?.currentTime;\n};\n\nconst seek = event => {\n const time = Number(event.target.value);\n audioPlayer.value.currentTime = time;\n currentTime.value = time;\n};\n\nconst playOrPause = () => {\n if (isPlaying.value) {\n audioPlayer.value.pause();\n isPlaying.value = false;\n } else {\n // Emit event to pause all other audio\n emitter.emit('pause_playing_audio', uid);\n audioPlayer.value.play();\n isPlaying.value = true;\n }\n};\n\nconst onEnd = () => {\n isPlaying.value = false;\n currentTime.value = 0;\n playbackSpeed.value = 1;\n audioPlayer.value.playbackRate = 1;\n};\n\nconst changePlaybackSpeed = () => {\n const speeds = [1, 1.5, 2];\n const currentIndex = speeds.indexOf(playbackSpeed.value);\n const nextIndex = (currentIndex + 1) % speeds.length;\n playbackSpeed.value = speeds[nextIndex];\n audioPlayer.value.playbackRate = playbackSpeed.value;\n};\n\nconst downloadAudio = async () => {\n const { fileType, dataUrl, extension } = attachment;\n downloadFile({ url: dataUrl, type: fileType, extension });\n};\n</script>\n\n<template>\n <audio\n ref=\"audioPlayer\"\n controls\n class=\"hidden\"\n playsinline\n @loadedmetadata=\"onLoadedMetadata\"\n @timeupdate=\"onTimeUpdate\"\n @ended=\"onEnd\"\n >\n <source :src=\"timeStampURL\" />\n </audio>\n <div\n v-bind=\"$attrs\"\n class=\"rounded-xl w-full gap-2 p-1.5 bg-n-alpha-white flex flex-col items-center border border-n-container shadow-[0px_2px_8px_0px_rgba(94,94,94,0.06)]\"\n >\n <div class=\"flex gap-1 w-full flex-1 items-center justify-start\">\n <button class=\"p-0 border-0 size-8\" @click=\"playOrPause\">\n <Icon\n v-if=\"isPlaying\"\n class=\"size-8\"\n icon=\"i-teenyicons-pause-small-solid\"\n />\n <Icon v-else class=\"size-8\" icon=\"i-teenyicons-play-small-solid\" />\n </button>\n <div class=\"tabular-nums text-xs\">\n {{ formatTime(currentTime) }}{{$t(' / ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport {\n computed,\n onMounted,\n useTemplateRef,\n ref,\n getCurrentInstance,\n} from 'vue';\nimport Icon from 'next/icon/Icon.vue';\nimport { timeStampAppendedURL } from 'dashboard/helper/URLHelper';\nimport { downloadFile } from '@chatwoot/utils';\nimport { useEmitter } from 'dashboard/composables/emitter';\nimport { emitter } from 'shared/helpers/mitt';\n\nconst { attachment } = defineProps({\n attachment: {\n type: Object,\n required: true,\n },\n});\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst timeStampURL = computed(() => {\n return timeStampAppendedURL(attachment.dataUrl);\n});\n\nconst audioPlayer = useTemplateRef('audioPlayer');\n\nconst isPlaying = ref(false);\nconst isMuted = ref(false);\nconst currentTime = ref(0);\nconst duration = ref(0);\nconst playbackSpeed = ref(1);\n\nconst { uid } = getCurrentInstance();\n\nconst onLoadedMetadata = () => {\n duration.value = audioPlayer.value?.duration;\n};\n\nconst playbackSpeedLabel = computed(() => {\n return `${playbackSpeed.value}x`;\n});\n\n// There maybe a chance that the audioPlayer ref is not available\n// When the onLoadMetadata is called, so we need to set the duration\n// value when the component is mounted\nonMounted(() => {\n duration.value = audioPlayer.value?.duration;\n audioPlayer.value.playbackRate = playbackSpeed.value;\n});\n\n// Listen for global audio play events and pause if it's not this audio\nuseEmitter('pause_playing_audio', currentPlayingId => {\n if (currentPlayingId !== uid && isPlaying.value) {\n try {\n audioPlayer.value.pause();\n } catch {\n /* ignore pause errors */\n }\n isPlaying.value = false;\n }\n});\n\nconst formatTime = time => {\n if (!time || Number.isNaN(time)) return '00:00';\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n};\n\nconst toggleMute = () => {\n audioPlayer.value.muted = !audioPlayer.value.muted;\n isMuted.value = audioPlayer.value.muted;\n};\n\nconst onTimeUpdate = () => {\n currentTime.value = audioPlayer.value?.currentTime;\n};\n\nconst seek = event => {\n const time = Number(event.target.value);\n audioPlayer.value.currentTime = time;\n currentTime.value = time;\n};\n\nconst playOrPause = () => {\n if (isPlaying.value) {\n audioPlayer.value.pause();\n isPlaying.value = false;\n } else {\n // Emit event to pause all other audio\n emitter.emit('pause_playing_audio', uid);\n audioPlayer.value.play();\n isPlaying.value = true;\n }\n};\n\nconst onEnd = () => {\n isPlaying.value = false;\n currentTime.value = 0;\n playbackSpeed.value = 1;\n audioPlayer.value.playbackRate = 1;\n};\n\nconst changePlaybackSpeed = () => {\n const speeds = [1, 1.5, 2];\n const currentIndex = speeds.indexOf(playbackSpeed.value);\n const nextIndex = (currentIndex + 1) % speeds.length;\n playbackSpeed.value = speeds[nextIndex];\n audioPlayer.value.playbackRate = playbackSpeed.value;\n};\n\nconst downloadAudio = async () => {\n const { fileType, dataUrl, extension } = attachment;\n downloadFile({ url: dataUrl, type: fileType, extension });\n};\n</script>\n\n<template>\n <audio\n ref=\"audioPlayer\"\n controls\n class=\"hidden\"\n playsinline\n @loadedmetadata=\"onLoadedMetadata\"\n @timeupdate=\"onTimeUpdate\"\n @ended=\"onEnd\"\n >\n <source :src=\"timeStampURL\" />\n </audio>\n <div\n v-bind=\"$attrs\"\n class=\"rounded-xl w-full gap-2 p-1.5 bg-n-alpha-white flex flex-col items-center border border-n-container shadow-[0px_2px_8px_0px_rgba(94,94,94,0.06)]\"\n >\n <div class=\"flex gap-1 w-full flex-1 items-center justify-start\">\n <button class=\"p-0 border-0 size-8\" @click=\"playOrPause\">\n <Icon\n v-if=\"isPlaying\"\n class=\"size-8\"\n icon=\"i-teenyicons-pause-small-solid\"\n />\n <Icon v-else class=\"size-8\" icon=\"i-teenyicons-play-small-solid\" />\n </button>\n <div class=\"tabular-nums text-xs\">\n {{ formatTime(currentTime) }} / {{ formatTime(duration) }}\n </div>\n <div class=\"flex-1 items-center flex px-2\">\n <input\n type=\"range\"\n min=\"0\"\n :max=\"duration\"\n :value=\"currentTime\"\n class=\"w-full h-1 bg-n-slate-12/40 rounded-lg appearance-none cursor-pointer accent-current\"\n @input=\"seek\"\n />\n </div>\n <button\n class=\"border-0 w-10 h-6 grid place-content-center bg-n-alpha-2 hover:bg-alpha-3 rounded-2xl\"\n @click=\"changePlaybackSpeed\"\n >\n <span class=\"text-xs text-n-slate-11 font-medium\">\n {{ playbackSpeedLabel }}\n </span>\n </button>\n <button\n class=\"p-0 border-0 size-8 grid place-content-center\"\n @click=\"toggleMute\"\n >\n <Icon v-if=\"isMuted\" class=\"size-4\" icon=\"i-lucide-volume-off\" />\n <Icon v-else class=\"size-4\" icon=\"i-lucide-volume-2\" />\n </button>\n <button\n class=\"p-0 border-0 size-8 grid place-content-center\"\n @click=\"downloadAudio\"\n >\n <Icon class=\"size-4\" icon=\"i-lucide-download\" />\n </button>\n </div>\n\n <div\n v-if=\"attachment.transcribedText\"\n class=\"text-n-slate-12 p-3 text-sm bg-n-alpha-1 rounded-lg w-full break-words\"\n >\n {{ attachment.transcribedText }}\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/chips/File.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/chips/Image.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/chips/Video.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/fixtures/emailConversation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/fixtures/instagramConversation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/fixtures/newsletterEmail.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/fixtures/simpleEmail.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/fixtures/textOnly.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/fixtures/textWithMedia.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/provider.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/EmailMessages.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/InstagramBubbles.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/InstagramMessages.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/MediaBubbles.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/MessageBubbles.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/Template/CallToAction.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/Template/Card.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/Template/ListPicker.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/Template/Media.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/Template/QuickReply.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/Template/Text.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/message/stories/TextMessages.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/pagination/PaginationFooter.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/pagination/PaginationFooter.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'translationKey' dynamic key is used'","line":49,"column":10,"nodeType":"CallExpression","endLine":57,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useNumberFormatter } from 'shared/composables/useNumberFormatter';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n currentPage: {\n type: Number,\n required: true,\n },\n totalItems: {\n type: Number,\n required: true,\n },\n itemsPerPage: {\n type: Number,\n default: 16,\n },\n currentPageInfo: {\n type: String,\n default: '',\n },\n});\nconst emit = defineEmits(['update:currentPage']);\nconst { t } = useI18n();\nconst { formatCompactNumber, formatFullNumber } = useNumberFormatter();\n\nconst totalPages = computed(() =>\n Math.ceil(props.totalItems / props.itemsPerPage)\n);\nconst startItem = computed(\n () => (props.currentPage - 1) * props.itemsPerPage + 1\n);\nconst endItem = computed(() =>\n Math.min(startItem.value + props.itemsPerPage - 1, props.totalItems)\n);\nconst isFirstPage = computed(() => props.currentPage === 1);\nconst isLastPage = computed(() => props.currentPage === totalPages.value);\nconst changePage = newPage => {\n if (newPage >= 1 && newPage <= totalPages.value) {\n emit('update:currentPage', newPage);\n }\n};\n\nconst currentPageInformation = computed(() => {\n const translationKey = props.currentPageInfo || 'PAGINATION_FOOTER.SHOWING';\n return t(\n translationKey,\n {\n startItem: formatFullNumber(startItem.value),\n endItem: formatFullNumber(endItem.value),\n totalItems: formatCompactNumber(props.totalItems),\n },\n Number(props.totalItems)\n );\n});\n\nconst pageInfo = computed(() => {\n return t(\n 'PAGINATION_FOOTER.CURRENT_PAGE_INFO',\n {\n currentPage: '',\n totalPages: formatCompactNumber(totalPages.value),\n },\n Number(totalPages.value)\n );\n});\n</script>\n\n<template>\n <div\n class=\"flex justify-between h-12 w-full max-w-[calc(60rem-3px)] outline outline-n-container outline-1 -outline-offset-1 mx-auto bg-n-solid-2 rounded-xl py-2 ltr:pl-4 rtl:pr-4 ltr:pr-3 rtl:pl-3 items-center before:absolute before:inset-x-0 before:-top-4 before:bg-gradient-to-t before:from-n-background before:from-10% before:dark:from-0% before:to-transparent before:h-4 before:pointer-events-none\"\n >\n <div class=\"flex items-center gap-3\">\n <span class=\"min-w-0 text-sm font-normal line-clamp-1 text-n-slate-11\">\n {{ currentPageInformation }}\n </span>\n </div>\n <div class=\"flex items-center gap-2\">\n <Button\n icon=\"i-lucide-chevrons-left\"\n variant=\"ghost\"\n size=\"sm\"\n color=\"slate\"\n class=\"!w-8 !h-6\"\n :disabled=\"isFirstPage\"\n @click=\"changePage(1)\"\n />\n <Button\n icon=\"i-lucide-chevron-left\"\n variant=\"ghost\"\n color=\"slate\"\n size=\"sm\"\n class=\"!w-8 !h-6\"\n :disabled=\"isFirstPage\"\n @click=\"changePage(currentPage - 1)\"\n />\n <div class=\"inline-flex items-center gap-2 text-sm text-n-slate-11\">\n <span class=\"px-3 tabular-nums py-0.5 bg-n-alpha-black2 rounded-md\">\n {{ formatFullNumber(currentPage) }}\n </span>\n <span class=\"truncate\">\n {{ pageInfo }}\n </span>\n </div>\n <Button\n icon=\"i-lucide-chevron-right\"\n variant=\"ghost\"\n color=\"slate\"\n size=\"sm\"\n class=\"!w-8 !h-6\"\n :disabled=\"isLastPage\"\n @click=\"changePage(currentPage + 1)\"\n />\n <Button\n icon=\"i-lucide-chevrons-right\"\n variant=\"ghost\"\n color=\"slate\"\n size=\"sm\"\n class=\"!w-8 !h-6\"\n :disabled=\"isLastPage\"\n @click=\"changePage(totalPages)\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/phonenumberinput/PhoneNumberInput.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Phone number value: ' is used","line":19,"column":30,"nodeType":null,"endLine":19,"endColumn":50,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,506],"text":"<i18n>\n{\n \"en\": {\n \"Phone number value: \": \"Phone number value: \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport PhoneNumberInput from './PhoneNumberInput.vue';\n\nconst phoneNumber = ref('+14155552671');\n</script>\n\n<template>\n <Story\n title=\"Components/PhoneNumberInput\"\n :layout=\"{ type: 'grid', width: '400px' }\"\n >\n <Variant title=\"Default\">\n <div class=\"flex flex-col gap-4 p-4 h-[300px]\">\n <PhoneNumberInput\n v-model=\"phoneNumber\"\n placeholder=\"Enter phone number\"\n />\n <div class=\"text-sm\">{{$t('Phone number value: ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport PhoneNumberInput from './PhoneNumberInput.vue';\n\nconst phoneNumber = ref('+14155552671');\n</script>\n\n<template>\n <Story\n title=\"Components/PhoneNumberInput\"\n :layout=\"{ type: 'grid', width: '400px' }\"\n >\n <Variant title=\"Default\">\n <div class=\"flex flex-col gap-4 p-4 h-[300px]\">\n <PhoneNumberInput\n v-model=\"phoneNumber\"\n placeholder=\"Enter phone number\"\n />\n <div class=\"text-sm\">Phone number value: {{ phoneNumber }}</div>\n </div>\n </Variant>\n\n <Variant title=\"Disabled\">\n <div class=\"flex flex-col gap-4 p-4 h-[300px]\">\n <PhoneNumberInput\n v-model=\"phoneNumber\"\n placeholder=\"Enter phone number\"\n disabled\n />\n </div>\n </Variant>\n\n <Variant title=\"Without Border\">\n <div class=\"flex flex-col gap-4 p-4 h-[300px]\">\n <PhoneNumberInput\n v-model=\"phoneNumber\"\n placeholder=\"Enter phone number\"\n :show-border=\"false\"\n />\n </div>\n </Variant>\n\n <Variant title=\"Empty State auto select based on time zone\">\n <div class=\"flex flex-col gap-4 p-4 h-[300px]\">\n <PhoneNumberInput placeholder=\"Enter phone number\" />\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/phonenumberinput/PhoneNumberInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/selectmenu/SelectMenu.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Selected value: ' is used","line":27,"column":30,"nodeType":null,"endLine":27,"endColumn":46,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,750],"text":"<i18n>\n{\n \"en\": {\n \"Selected value: \": \"Selected value: \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport SelectMenu from './SelectMenu.vue';\n\nconst sampleOptions = [\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n { label: 'Option 4', value: 'option4' },\n];\n\nconst selectedValue = ref('option1');\n</script>\n\n<template>\n <Story\n title=\"Components/SelectMenu\"\n :layout=\"{ type: 'grid', width: '400px' }\"\n >\n <Variant title=\"Default\">\n <div class=\"flex flex-col gap-4 p-4 h-[400px]\">\n <SelectMenu\n v-model=\"selectedValue\"\n :options=\"sampleOptions\"\n :label=\"sampleOptions.find(opt => opt.value === selectedValue)?.label\"\n />\n <div class=\"text-sm\">{{$t('Selected value: ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport SelectMenu from './SelectMenu.vue';\n\nconst sampleOptions = [\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n { label: 'Option 4', value: 'option4' },\n];\n\nconst selectedValue = ref('option1');\n</script>\n\n<template>\n <Story\n title=\"Components/SelectMenu\"\n :layout=\"{ type: 'grid', width: '400px' }\"\n >\n <Variant title=\"Default\">\n <div class=\"flex flex-col gap-4 p-4 h-[400px]\">\n <SelectMenu\n v-model=\"selectedValue\"\n :options=\"sampleOptions\"\n :label=\"sampleOptions.find(opt => opt.value === selectedValue)?.label\"\n />\n <div class=\"text-sm\">Selected value: {{ selectedValue }}</div>\n </div>\n </Variant>\n\n <Variant title=\"With Many Options\">\n <div class=\"flex flex-col gap-4 p-4 h-[400px]\">\n <SelectMenu\n v-model=\"selectedValue\"\n :options=\"\n Array.from({ length: 10 }, (_, i) => ({\n label: `Option ${i + 1}`,\n value: `value${i + 1}`,\n }))\n \"\n label=\"Select from many\"\n />\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/selectmenu/SelectMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/ChannelLeaf.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/MobileSidebarLauncher.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/Sidebar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarAccountSwitcher.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarChangelogCard.vue","messages":[],"suppressedMessages":[{"ruleId":"no-empty","severity":2,"message":"Empty block statement.","line":46,"column":17,"nodeType":"BlockStatement","messageId":"unexpected","endLine":47,"endColumn":4,"suggestions":[{"messageId":"suggestComment","data":{"type":"block"},"fix":{"range":[1605,1608],"text":" /* empty */ "},"desc":"Add comment inside empty block statement."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarGroup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarGroupEmptyLeaf.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarGroupHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarGroupSeparator.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarNotificationBell.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarProfileMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarProfileMenuStatus.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/SidebarSubGroup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/provider.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/sidebar/useSidebarKeyboardShortcuts.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/spinner/Spinner.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/spinner/Spinner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/switch/Switch.story.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Default:' is used","line":32,"column":30,"nodeType":null,"endLine":32,"endColumn":38,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,786],"text":"<i18n>\n{\n \"en\": {\n \"Default:\": \"Default:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Switch from './Switch.vue';\nimport { ref } from 'vue';\n\n// Default varian\nconst isEnabled = ref(false);\n\n// States variant\nconst defaultValue = ref(false);\nconst checkedValue = ref(true);\n\n// Events variant\nconst eventValue = ref(false);\nconst lastChange = ref('No changes yet');\n\nconst onChange = value => {\n lastChange.value = `Changed to: ${value} at ${new Date().toLocaleTimeString()}`;\n};\n</script>\n\n<template>\n <Story title=\"Components/Switch\" :layout=\"{ type: 'grid', width: '200px' }\">\n <Variant title=\"Default\">\n <div class=\"p-2\">\n <Switch v-model=\"isEnabled\" />\n </div>\n </Variant>\n\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">{{$t('Default:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Checked:' is used","line":37,"column":30,"nodeType":null,"endLine":37,"endColumn":38,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,937],"text":"<i18n>\n{\n \"en\": {\n \"Checked:\": \"Checked:\"\n }\n}\n</i18n>\n\n<script setup>\nimport Switch from './Switch.vue';\nimport { ref } from 'vue';\n\n// Default varian\nconst isEnabled = ref(false);\n\n// States variant\nconst defaultValue = ref(false);\nconst checkedValue = ref(true);\n\n// Events variant\nconst eventValue = ref(false);\nconst lastChange = ref('No changes yet');\n\nconst onChange = value => {\n lastChange.value = `Changed to: ${value} at ${new Date().toLocaleTimeString()}`;\n};\n</script>\n\n<template>\n <Story title=\"Components/Switch\" :layout=\"{ type: 'grid', width: '200px' }\">\n <Variant title=\"Default\">\n <div class=\"p-2\">\n <Switch v-model=\"isEnabled\" />\n </div>\n </Variant>\n\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">Default:</span>\n <Switch v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">{{$t('Checked:')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Last change: ' is used","line":46,"column":44,"nodeType":null,"endLine":46,"endColumn":57,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1211],"text":"<i18n>\n{\n \"en\": {\n \"Last change: \": \"Last change: \"\n }\n}\n</i18n>\n\n<script setup>\nimport Switch from './Switch.vue';\nimport { ref } from 'vue';\n\n// Default varian\nconst isEnabled = ref(false);\n\n// States variant\nconst defaultValue = ref(false);\nconst checkedValue = ref(true);\n\n// Events variant\nconst eventValue = ref(false);\nconst lastChange = ref('No changes yet');\n\nconst onChange = value => {\n lastChange.value = `Changed to: ${value} at ${new Date().toLocaleTimeString()}`;\n};\n</script>\n\n<template>\n <Story title=\"Components/Switch\" :layout=\"{ type: 'grid', width: '200px' }\">\n <Variant title=\"Default\">\n <div class=\"p-2\">\n <Switch v-model=\"isEnabled\" />\n </div>\n </Variant>\n\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">Default:</span>\n <Switch v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">Checked:</span>\n <Switch v-model=\"checkedValue\" />\n </div>\n </div>\n </Variant>\n\n <Variant title=\"Events\">\n <div class=\"p-2 space-y-4\">\n <Switch v-model=\"eventValue\" @change=\"onChange\" />\n <div class=\"text-sm text-gray-600\">{{$t('Last change: ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport Switch from './Switch.vue';\nimport { ref } from 'vue';\n\n// Default varian\nconst isEnabled = ref(false);\n\n// States variant\nconst defaultValue = ref(false);\nconst checkedValue = ref(true);\n\n// Events variant\nconst eventValue = ref(false);\nconst lastChange = ref('No changes yet');\n\nconst onChange = value => {\n lastChange.value = `Changed to: ${value} at ${new Date().toLocaleTimeString()}`;\n};\n</script>\n\n<template>\n <Story title=\"Components/Switch\" :layout=\"{ type: 'grid', width: '200px' }\">\n <Variant title=\"Default\">\n <div class=\"p-2\">\n <Switch v-model=\"isEnabled\" />\n </div>\n </Variant>\n\n <Variant title=\"States\">\n <div class=\"p-2 space-y-4\">\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">Default:</span>\n <Switch v-model=\"defaultValue\" />\n </div>\n\n <div class=\"flex items-center gap-4\">\n <span class=\"w-20\">Checked:</span>\n <Switch v-model=\"checkedValue\" />\n </div>\n </div>\n </Variant>\n\n <Variant title=\"Events\">\n <div class=\"p-2 space-y-4\">\n <Switch v-model=\"eventValue\" @change=\"onChange\" />\n <div class=\"text-sm text-gray-600\">Last change: {{ lastChange }}</div>\n </div>\n </Variant>\n\n <Variant title=\"Disabled\">\n <div class=\"p-2\">\n <Switch v-model=\"isEnabled\" disabled />\n </div>\n </Variant>\n </Story>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/switch/Switch.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/tabbar/TabBar.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/tabbar/TabBar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/taginput/TagInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/taginput/helper/spec/tagInputHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/taginput/helper/tagInputHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/textarea/TextArea.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/textarea/TextArea.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/whatsapp/WhatsAppTemplateParser.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":45,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":45,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[847,887],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":114,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":114,"endColumn":18,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[2908,2956],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/YearInReviewBanner.vue","messages":[{"ruleId":"vue/no-root-v-if","severity":1,"message":"`v-if` should not be used on root element without `v-else`.","line":49,"column":1,"nodeType":"VElement","messageId":"noRootVIf","endLine":88,"endColumn":12}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport YearInReviewModal from './YearInReviewModal.vue';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\n\nconst yearInReviewBannerImage =\n '/assets/images/dashboard/year-in-review/year-in-review-sidebar.png';\nconst { t } = useI18n();\nconst { uiSettings, updateUISettings } = useUISettings();\nconst getters = useStoreGetters();\nconst showModal = ref(false);\nconst modalRef = ref(null);\n\nconst currentYear = 2025;\n\nconst isACustomBrandedInstance =\n getters['globalConfig/isACustomBrandedInstance'];\n\nconst bannerClosedKey = computed(() => {\n const accountId = getters.getCurrentAccountId.value;\n return `yir_closed_${accountId}_${currentYear}`;\n});\n\nconst isBannerClosed = computed(() => {\n return uiSettings.value?.[bannerClosedKey.value] === true;\n});\n\nconst shouldShowBanner = computed(\n () => !isBannerClosed.value && !isACustomBrandedInstance.value\n);\n\nconst openModal = () => {\n showModal.value = true;\n};\n\nconst closeModal = () => {\n showModal.value = false;\n};\n\nconst closeBanner = event => {\n event.stopPropagation();\n updateUISettings({ [bannerClosedKey.value]: true });\n};\n</script>\n\n<template>\n <div v-if=\"shouldShowBanner\" class=\"relative\">\n <div\n class=\"mx-2 my-1 p-3 bg-n-iris-9 rounded-lg cursor-pointer hover:shadow-md transition-all\"\n @click=\"openModal\"\n >\n <div class=\"flex items-start justify-between gap-2 mb-3\">\n <span\n class=\"text-sm font-semibold text-white leading-tight tracking-tight flex-1\"\n >\n {{ t('YEAR_IN_REVIEW.BANNER.TITLE', { year: currentYear }) }}\n </span>\n <button\n class=\"inline-flex items-center justify-center rounded hover:bg-white hover:bg-opacity-20 transition-colors p-0\"\n @click=\"closeBanner\"\n >\n <Icon\n icon=\"i-lucide-x size-4 mt-0.5 text-n-slate-1 dark:text-n-slate-12\"\n />\n </button>\n </div>\n\n <div class=\"flex flex-col gap-3\">\n <img\n :src=\"yearInReviewBannerImage\"\n alt=\"Year in Review\"\n class=\"w-full h-auto rounded\"\n />\n <button\n class=\"w-full px-3 py-2 bg-white text-n-iris-9 text-xs font-medium rounded-mdtracking-tight\"\n @click.stop=\"openModal\"\n >\n {{ t('YEAR_IN_REVIEW.BANNER.BUTTON') }}\n </button>\n </div>\n </div>\n\n <YearInReviewModal ref=\"modalRef\" :show=\"showModal\" @close=\"closeModal\" />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/YearInReviewModal.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":79,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":79,"endColumn":18,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"log"},"fix":{"range":[2219,2264],"text":""},"desc":"Remove the console.log()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":83,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":83,"endColumn":16,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"log"},"fix":{"range":[2338,2382],"text":""},"desc":"Remove the console.log()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/slides/BusiestDaySlide.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/slides/ConversationsSlide.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/slides/IntroSlide.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/slides/PersonalitySlide.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`YEAR_IN_REVIEW.PERSONALITY.MESSAGES.${key}`' dynamic key is used'","line":64,"column":10,"nodeType":"CallExpression","endLine":64,"endColumn":67}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n supportPersonality: {\n type: Object,\n required: true,\n },\n});\n\nconst { t } = useI18n();\n\nconst clockImage =\n '/assets/images/dashboard/year-in-review/fourth-frame-clock.png';\nconst doubleQuotesImage =\n '/assets/images/dashboard/year-in-review/double-quotes.png';\n\nconst formatResponseTime = seconds => {\n if (seconds < 60) {\n return 'less than a minute';\n }\n if (seconds < 3600) {\n const minutes = Math.floor(seconds / 60);\n return minutes === 1 ? '1 minute' : `${minutes} minutes`;\n }\n if (seconds < 86400) {\n const hours = Math.floor(seconds / 3600);\n return hours === 1 ? '1 hour' : `${hours} hours`;\n }\n return 'more than a day';\n};\n\nconst personality = computed(() => {\n const seconds = props.supportPersonality.avg_response_time_seconds;\n const minutes = seconds / 60;\n\n if (minutes < 2) {\n return 'Swift Helper';\n }\n if (minutes < 5) {\n return 'Quick Responder';\n }\n if (minutes < 15) {\n return 'Steady Support';\n }\n return 'Thoughtful Advisor';\n});\n\nconst personalityMessage = computed(() => {\n const seconds = props.supportPersonality.avg_response_time_seconds;\n const time = formatResponseTime(seconds);\n\n const personalityKeyMap = {\n 'Swift Helper': 'SWIFT_HELPER',\n 'Quick Responder': 'QUICK_RESPONDER',\n 'Steady Support': 'STEADY_SUPPORT',\n 'Thoughtful Advisor': 'THOUGHTFUL_ADVISOR',\n };\n\n const key = personalityKeyMap[personality.value];\n if (!key) return '';\n\n return t(`YEAR_IN_REVIEW.PERSONALITY.MESSAGES.${key}`, { time });\n});\n</script>\n\n<template>\n <div class=\"absolute inset-0 flex items-center justify-center px-8 md:px-32\">\n <div class=\"flex flex-col gap-9 max-w-3xl\">\n <div class=\"mb-4 md:mb-6\">\n <img :src=\"clockImage\" alt=\"Clock\" class=\"w-auto h-28\" />\n <div class=\"flex items-center justify-start flex-1 mt-9\">\n <div class=\"text-n-slate-1 dark:text-n-slate-12 flex gap-3 flex-col\">\n <div class=\"text-2xl md:text-4xl tracking-tight\">\n {{ t('YEAR_IN_REVIEW.PERSONALITY.TITLE') }}\n </div>\n <div class=\"text-6xl md:text-7xl lg:text-8xl tracking-tighter\">\n {{ personality }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"flex items-center justify-center gap-3 md:gap-6\">\n <img\n :src=\"doubleQuotesImage\"\n alt=\"Quote\"\n class=\"w-8 h-8 md:w-12 md:h-12 lg:w-16 lg:h-16\"\n />\n <p\n class=\"text-xl md:text-3xl lg:text-3xl font-medium tracking-[-0.2px] text-n-slate-12 dark:text-n-slate-1\"\n >\n {{ personalityMessage }}\n </p>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components-next/year-in-review/slides/ThankYouSlide.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/Accordion/AccordionItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ChannelSelector.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' 🚀\n ' is used","line":53,"column":49,"nodeType":null,"endLine":54,"endColumn":7,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1524],"text":"<i18n>\n{\n \"en\": {\n \" 🚀\\n \": \" 🚀\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport Icon from 'next/icon/Icon.vue';\n\ndefineProps({\n title: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n default: '',\n },\n icon: {\n type: String,\n required: true,\n },\n isComingSoon: {\n type: Boolean,\n default: false,\n },\n});\n</script>\n\n<template>\n <button\n class=\"relative bg-n-solid-1 gap-6 cursor-pointer rounded-2xl flex flex-col justify-start transition-all duration-200 ease-in -m-px py-6 px-5 items-start border border-solid border-n-weak\"\n :class=\"{\n 'hover:enabled:border-n-blue-9 hover:enabled:shadow-md disabled:opacity-60 disabled:cursor-not-allowed':\n !isComingSoon,\n 'cursor-not-allowed disabled:opacity-80': isComingSoon,\n }\"\n >\n <div\n class=\"flex size-10 items-center justify-center rounded-full bg-n-alpha-2\"\n >\n <Icon :icon=\"icon\" class=\"text-n-slate-10 size-6\" />\n </div>\n\n <div class=\"flex flex-col items-start gap-1.5\">\n <h3 class=\"text-n-slate-12 text-sm text-start font-medium capitalize\">\n {{ title }}\n </h3>\n <p class=\"text-n-slate-11 text-start text-sm\">\n {{ description }}\n </p>\n </div>\n\n <div\n v-if=\"isComingSoon\"\n class=\"absolute inset-0 flex items-center justify-center backdrop-blur-[2px] rounded-2xl bg-gradient-to-br from-n-background/90 via-n-background/70 to-n-background/95 cursor-not-allowed\"\n >\n <span class=\"text-n-slate-12 font-medium text-sm\">\n {{ $t('CHANNEL_SELECTOR.COMING_SOON') }}{{$t(` 🚀\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport Icon from 'next/icon/Icon.vue';\n\ndefineProps({\n title: {\n type: String,\n required: true,\n },\n description: {\n type: String,\n default: '',\n },\n icon: {\n type: String,\n required: true,\n },\n isComingSoon: {\n type: Boolean,\n default: false,\n },\n});\n</script>\n\n<template>\n <button\n class=\"relative bg-n-solid-1 gap-6 cursor-pointer rounded-2xl flex flex-col justify-start transition-all duration-200 ease-in -m-px py-6 px-5 items-start border border-solid border-n-weak\"\n :class=\"{\n 'hover:enabled:border-n-blue-9 hover:enabled:shadow-md disabled:opacity-60 disabled:cursor-not-allowed':\n !isComingSoon,\n 'cursor-not-allowed disabled:opacity-80': isComingSoon,\n }\"\n >\n <div\n class=\"flex size-10 items-center justify-center rounded-full bg-n-alpha-2\"\n >\n <Icon :icon=\"icon\" class=\"text-n-slate-10 size-6\" />\n </div>\n\n <div class=\"flex flex-col items-start gap-1.5\">\n <h3 class=\"text-n-slate-12 text-sm text-start font-medium capitalize\">\n {{ title }}\n </h3>\n <p class=\"text-n-slate-11 text-start text-sm\">\n {{ description }}\n </p>\n </div>\n\n <div\n v-if=\"isComingSoon\"\n class=\"absolute inset-0 flex items-center justify-center backdrop-blur-[2px] rounded-2xl bg-gradient-to-br from-n-background/90 via-n-background/70 to-n-background/95 cursor-not-allowed\"\n >\n <span class=\"text-n-slate-12 font-medium text-sm\">\n {{ $t('CHANNEL_SELECTOR.COMING_SOON') }} 🚀\n </span>\n </div>\n </button>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ChatList.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`FILTER.ATTRIBUTES.${filter.attributeI18nKey}`' dynamic key is used'","line":110,"column":20,"nodeType":"CallExpression","endLine":110,"endColumn":69},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CHAT_LIST.ASSIGNEE_TYPE_TABS.${key}`' dynamic key is used'","line":207,"column":11,"nodeType":"CallExpression","endLine":207,"endColumn":51}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\n// [TODO] This componet is too big and bulky to be in the same file, we can consider splitting this into multiple\n// composables and components, useVirtualChatList, useChatlistFilters\nimport {\n ref,\n unref,\n provide,\n computed,\n watch,\n onMounted,\n defineEmits,\n} from 'vue';\nimport { useStore } from 'vuex';\nimport { useRoute, useRouter } from 'vue-router';\nimport {\n useMapGetter,\n useFunctionGetter,\n} from 'dashboard/composables/store.js';\n\n// [VITE] [TODO] We are using vue-virtual-scroll for now, since that seemed the simplest way to migrate\n// from the current one. But we should consider using tanstack virtual in the future\n// https://tanstack.com/virtual/latest/docs/framework/vue/examples/variable\nimport { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller';\nimport ChatListHeader from './ChatListHeader.vue';\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\nimport ConversationFilter from 'next/filter/ConversationFilter.vue';\nimport SaveCustomView from 'next/filter/SaveCustomView.vue';\nimport ChatTypeTabs from './widgets/ChatTypeTabs.vue';\nimport ConversationItem from './ConversationItem.vue';\nimport DeleteCustomViews from 'dashboard/routes/dashboard/customviews/DeleteCustomViews.vue';\nimport ConversationBulkActions from './widgets/conversation/conversationBulkActions/Index.vue';\nimport IntersectionObserver from './IntersectionObserver.vue';\nimport TeleportWithDirection from 'dashboard/components-next/TeleportWithDirection.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport { useAlert } from 'dashboard/composables';\nimport { useChatListKeyboardEvents } from 'dashboard/composables/chatlist/useChatListKeyboardEvents';\nimport { useBulkActions } from 'dashboard/composables/chatlist/useBulkActions';\nimport { useFilter } from 'shared/composables/useFilter';\nimport { useTrack } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport {\n useCamelCase,\n useSnakeCase,\n} from 'dashboard/composables/useTransformKeys';\nimport { useEmitter } from 'dashboard/composables/emitter';\nimport { useEventListener } from '@vueuse/core';\n\nimport { emitter } from 'shared/helpers/mitt';\n\nimport wootConstants from 'dashboard/constants/globals';\nimport advancedFilterOptions from './widgets/conversation/advancedFilterItems';\nimport filterQueryGenerator from '../helper/filterQueryGenerator.js';\nimport languages from 'dashboard/components/widgets/conversation/advancedFilterItems/languages';\nimport countries from 'shared/constants/countries';\nimport { generateValuesForEditCustomViews } from 'dashboard/helper/customViewsHelper';\nimport { conversationListPageURL } from '../helper/URLHelper';\nimport {\n isOnMentionsView,\n isOnUnattendedView,\n} from '../store/modules/conversations/helpers/actionHelpers';\nimport {\n getUserPermissions,\n filterItemsByPermission,\n} from 'dashboard/helper/permissionsHelper.js';\nimport { matchesFilters } from '../store/modules/conversations/helpers/filterHelpers';\nimport { CONVERSATION_EVENTS } from '../helper/AnalyticsHelper/events';\nimport { ASSIGNEE_TYPE_TAB_PERMISSIONS } from 'dashboard/constants/permissions.js';\n\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css';\n\nconst props = defineProps({\n conversationInbox: { type: [String, Number], default: 0 },\n teamId: { type: [String, Number], default: 0 },\n label: { type: String, default: '' },\n conversationType: { type: String, default: '' },\n foldersId: { type: [String, Number], default: 0 },\n showConversationList: { default: true, type: Boolean },\n isOnExpandedLayout: { default: false, type: Boolean },\n});\n\nconst emit = defineEmits(['conversationLoad']);\nconst { uiSettings } = useUISettings();\nconst { t } = useI18n();\nconst router = useRouter();\nconst route = useRoute();\nconst store = useStore();\n\nconst conversationListRef = ref(null);\nconst conversationDynamicScroller = ref(null);\n\nprovide('contextMenuElementTarget', conversationDynamicScroller);\n\nconst activeAssigneeTab = ref(wootConstants.ASSIGNEE_TYPE.ME);\nconst activeStatus = ref(wootConstants.STATUS_TYPE.OPEN);\nconst activeSortBy = ref(wootConstants.SORT_BY_TYPE.LAST_ACTIVITY_AT_DESC);\nconst showAdvancedFilters = ref(false);\n// chatsOnView is to store the chats that are currently visible on the screen,\n// which mirrors the conversationList.\nconst chatsOnView = ref([]);\nconst foldersQuery = ref({});\nconst showAddFoldersModal = ref(false);\nconst showDeleteFoldersModal = ref(false);\nconst isContextMenuOpen = ref(false);\nconst appliedFilter = ref([]);\nconst advancedFilterTypes = ref(\n advancedFilterOptions.map(filter => ({\n ...filter,\n attributeName: t(`FILTER.ATTRIBUTES.${filter.attributeI18nKey}`),\n }))\n);\n\nconst currentUser = useMapGetter('getCurrentUser');\nconst chatLists = useMapGetter('getFilteredConversations');\nconst mineChatsList = useMapGetter('getMineChats');\nconst allChatList = useMapGetter('getAllStatusChats');\nconst unAssignedChatsList = useMapGetter('getUnAssignedChats');\nconst chatListLoading = useMapGetter('getChatListLoadingStatus');\nconst activeInbox = useMapGetter('getSelectedInbox');\nconst conversationStats = useMapGetter('conversationStats/getStats');\nconst appliedFilters = useMapGetter('getAppliedConversationFiltersV2');\nconst folders = useMapGetter('customViews/getConversationCustomViews');\nconst agentList = useMapGetter('agents/getAgents');\nconst teamsList = useMapGetter('teams/getTeams');\nconst inboxesList = useMapGetter('inboxes/getInboxes');\nconst campaigns = useMapGetter('campaigns/getAllCampaigns');\nconst labels = useMapGetter('labels/getLabels');\nconst currentAccountId = useMapGetter('getCurrentAccountId');\n// We can't useFunctionGetter here since it needs to be called on setup?\nconst getTeamFn = useMapGetter('teams/getTeam');\n\nuseChatListKeyboardEvents(conversationListRef);\nconst {\n selectedConversations,\n selectedInboxes,\n selectConversation,\n deSelectConversation,\n selectAllConversations,\n resetBulkActions,\n isConversationSelected,\n onAssignAgent,\n onAssignLabels,\n onAssignTeamsForBulk,\n onUpdateConversations,\n} = useBulkActions();\n\nconst {\n initializeStatusAndAssigneeFilterToModal,\n initializeInboxTeamAndLabelFilterToModal,\n} = useFilter({\n filteri18nKey: 'FILTER',\n attributeModel: 'conversation_attribute',\n});\n\n// computed\nconst intersectionObserverOptions = computed(() => {\n return {\n root: conversationListRef.value,\n rootMargin: '100px 0px 100px 0px',\n };\n});\n\nconst hasAppliedFilters = computed(() => {\n return appliedFilters.value.length !== 0;\n});\n\nconst activeFolder = computed(() => {\n if (props.foldersId) {\n const activeView = folders.value.filter(\n view => view.id === Number(props.foldersId)\n );\n const [firstValue] = activeView;\n return firstValue;\n }\n return undefined;\n});\n\nconst activeFolderName = computed(() => {\n return activeFolder.value?.name;\n});\n\nconst hasActiveFolders = computed(() => {\n return Boolean(activeFolder.value && props.foldersId !== 0);\n});\n\nconst hasAppliedFiltersOrActiveFolders = computed(() => {\n return hasAppliedFilters.value || hasActiveFolders.value;\n});\n\nconst currentUserDetails = computed(() => {\n const { id, name } = currentUser.value;\n return { id, name };\n});\n\nconst userPermissions = computed(() => {\n return getUserPermissions(currentUser.value, currentAccountId.value);\n});\n\nconst assigneeTabItems = computed(() => {\n return filterItemsByPermission(\n ASSIGNEE_TYPE_TAB_PERMISSIONS,\n userPermissions.value,\n item => item.permissions\n ).map(({ key, count: countKey }) => ({\n key,\n name: t(`CHAT_LIST.ASSIGNEE_TYPE_TABS.${key}`),\n count: conversationStats.value[countKey] || 0,\n }));\n});\n\nconst showAssigneeInConversationCard = computed(() => {\n return (\n hasAppliedFiltersOrActiveFolders.value ||\n activeAssigneeTab.value === wootConstants.ASSIGNEE_TYPE.ALL\n );\n});\n\nconst currentPageFilterKey = computed(() => {\n return hasAppliedFiltersOrActiveFolders.value\n ? 'appliedFilters'\n : activeAssigneeTab.value;\n});\n\nconst inbox = useFunctionGetter('inboxes/getInbox', activeInbox);\nconst currentPage = useFunctionGetter(\n 'conversationPage/getCurrentPageFilter',\n activeAssigneeTab\n);\nconst currentFiltersPage = useFunctionGetter(\n 'conversationPage/getCurrentPageFilter',\n currentPageFilterKey\n);\nconst hasCurrentPageEndReached = useFunctionGetter(\n 'conversationPage/getHasEndReached',\n currentPageFilterKey\n);\n\nconst conversationCustomAttributes = useFunctionGetter(\n 'attributes/getAttributesByModel',\n 'conversation_attribute'\n);\n\nconst activeAssigneeTabCount = computed(() => {\n const count = assigneeTabItems.value.find(\n item => item.key === activeAssigneeTab.value\n ).count;\n return count;\n});\n\nconst conversationListPagination = computed(() => {\n const conversationsPerPage = 25;\n const hasChatsOnView =\n chatsOnView.value &&\n Array.isArray(chatsOnView.value) &&\n !chatsOnView.value.length;\n const isNoFiltersOrFoldersAndChatListNotEmpty =\n !hasAppliedFiltersOrActiveFolders.value && hasChatsOnView;\n const isUnderPerPage =\n chatsOnView.value.length < conversationsPerPage &&\n activeAssigneeTabCount.value < conversationsPerPage &&\n activeAssigneeTabCount.value > chatsOnView.value.length;\n\n if (isNoFiltersOrFoldersAndChatListNotEmpty && isUnderPerPage) {\n return 1;\n }\n\n return currentPage.value + 1;\n});\n\nconst conversationFilters = computed(() => {\n return {\n inboxId: props.conversationInbox ? props.conversationInbox : undefined,\n assigneeType: activeAssigneeTab.value,\n status: activeStatus.value,\n sortBy: activeSortBy.value,\n page: conversationListPagination.value,\n labels: props.label ? [props.label] : undefined,\n teamId: props.teamId || undefined,\n conversationType: props.conversationType || undefined,\n };\n});\n\nconst activeTeam = computed(() => {\n if (props.teamId) {\n return getTeamFn.value(props.teamId);\n }\n return {};\n});\n\nconst pageTitle = computed(() => {\n if (hasAppliedFilters.value) {\n return t('CHAT_LIST.TAB_HEADING');\n }\n if (inbox.value.name) {\n return inbox.value.name;\n }\n if (activeTeam.value.name) {\n return activeTeam.value.name;\n }\n if (props.label) {\n return `#${props.label}`;\n }\n if (props.conversationType === 'mention') {\n return t('CHAT_LIST.MENTION_HEADING');\n }\n if (props.conversationType === 'participating') {\n return t('CONVERSATION_PARTICIPANTS.SIDEBAR_MENU_TITLE');\n }\n if (props.conversationType === 'unattended') {\n return t('CHAT_LIST.UNATTENDED_HEADING');\n }\n if (hasActiveFolders.value) {\n return activeFolder.value.name;\n }\n return t('CHAT_LIST.TAB_HEADING');\n});\n\nconst conversationList = computed(() => {\n let localConversationList = [];\n\n if (!hasAppliedFiltersOrActiveFolders.value) {\n const filters = conversationFilters.value;\n if (activeAssigneeTab.value === 'me') {\n localConversationList = [...mineChatsList.value(filters)];\n } else if (activeAssigneeTab.value === 'unassigned') {\n localConversationList = [...unAssignedChatsList.value(filters)];\n } else {\n localConversationList = [...allChatList.value(filters)];\n }\n } else {\n localConversationList = [...chatLists.value];\n }\n\n if (activeFolder.value) {\n const { payload } = activeFolder.value.query;\n localConversationList = localConversationList.filter(conversation => {\n return matchesFilters(conversation, payload);\n });\n }\n\n return localConversationList;\n});\n\nconst showEndOfListMessage = computed(() => {\n return (\n conversationList.value.length &&\n hasCurrentPageEndReached.value &&\n !chatListLoading.value\n );\n});\n\nconst allConversationsSelected = computed(() => {\n return (\n conversationList.value.length === selectedConversations.value.length &&\n conversationList.value.every(el =>\n selectedConversations.value.includes(el.id)\n )\n );\n});\n\nconst uniqueInboxes = computed(() => {\n return [...new Set(selectedInboxes.value)];\n});\n\n// ---------------------- Methods -----------------------\nfunction setFiltersFromUISettings() {\n const { conversations_filter_by: filterBy = {} } = uiSettings.value;\n const { status, order_by: orderBy } = filterBy;\n activeStatus.value = status || wootConstants.STATUS_TYPE.OPEN;\n activeSortBy.value = Object.values(wootConstants.SORT_BY_TYPE).includes(\n orderBy\n )\n ? orderBy\n : wootConstants.SORT_BY_TYPE.LAST_ACTIVITY_AT_DESC;\n}\n\nfunction emitConversationLoaded() {\n emit('conversationLoad');\n // [VITE] removing this since the library has changed\n // nextTick(() => {\n // // Addressing a known issue in the virtual list library where dynamically added items\n // // might not render correctly. This workaround involves a slight manual adjustment\n // // to the scroll position, triggering the list to refresh its rendering.\n // const virtualList = conversationListRef.value;\n // const scrollToOffset = virtualList?.scrollToOffset;\n // const currentOffset = virtualList?.getOffset() || 0;\n // if (scrollToOffset) {\n // scrollToOffset(currentOffset + 1);\n // }\n // });\n}\n\nfunction fetchFilteredConversations(payload) {\n payload = useSnakeCase(payload);\n let page = currentFiltersPage.value + 1;\n store\n .dispatch('fetchFilteredConversations', {\n queryData: filterQueryGenerator(payload),\n page,\n })\n .then(emitConversationLoaded);\n\n showAdvancedFilters.value = false;\n}\n\nfunction fetchSavedFilteredConversations(payload) {\n payload = useSnakeCase(payload);\n let page = currentFiltersPage.value + 1;\n store\n .dispatch('fetchFilteredConversations', {\n queryData: payload,\n page,\n })\n .then(emitConversationLoaded);\n}\n\nfunction onApplyFilter(payload) {\n payload = useSnakeCase(payload);\n resetBulkActions();\n foldersQuery.value = filterQueryGenerator(payload);\n store.dispatch('conversationPage/reset');\n store.dispatch('emptyAllConversations');\n fetchFilteredConversations(payload);\n}\n\nfunction closeAdvanceFiltersModal() {\n showAdvancedFilters.value = false;\n appliedFilter.value = [];\n}\n\nfunction onUpdateSavedFilter(payload, folderName) {\n const transformedPayload = useSnakeCase(payload);\n const payloadData = {\n ...unref(activeFolder),\n name: unref(folderName),\n query: filterQueryGenerator(transformedPayload),\n };\n store.dispatch('customViews/update', payloadData);\n closeAdvanceFiltersModal();\n}\n\nfunction onClickOpenAddFoldersModal() {\n showAddFoldersModal.value = true;\n}\n\nfunction onCloseAddFoldersModal() {\n showAddFoldersModal.value = false;\n}\n\nfunction onClickOpenDeleteFoldersModal() {\n showDeleteFoldersModal.value = true;\n}\n\nfunction onCloseDeleteFoldersModal() {\n showDeleteFoldersModal.value = false;\n}\n\nfunction setParamsForEditFolderModal() {\n // Here we are setting the params for edit folder modal to show the existing values.\n\n // For agent, team, inboxes,and campaigns we get only the id's from the query.\n // So we are mapping the id's to the actual values.\n\n // For labels we get the name of the label from the query.\n // If we delete the label from the label list then we will not be able to show the label name.\n\n // For custom attributes we get only attribute key.\n // So we are mapping it to find the input type of the attribute to show in the edit folder modal.\n return {\n agents: agentList.value,\n teams: teamsList.value,\n inboxes: inboxesList.value,\n labels: labels.value,\n campaigns: campaigns.value,\n languages: languages,\n countries: countries,\n priority: [\n { id: 'low', name: t('CONVERSATION.PRIORITY.OPTIONS.LOW') },\n { id: 'medium', name: t('CONVERSATION.PRIORITY.OPTIONS.MEDIUM') },\n { id: 'high', name: t('CONVERSATION.PRIORITY.OPTIONS.HIGH') },\n { id: 'urgent', name: t('CONVERSATION.PRIORITY.OPTIONS.URGENT') },\n ],\n filterTypes: advancedFilterTypes.value,\n allCustomAttributes: conversationCustomAttributes.value,\n };\n}\n\nfunction initializeExistingFilterToModal() {\n const statusFilter = initializeStatusAndAssigneeFilterToModal(\n activeStatus.value,\n currentUserDetails.value,\n activeAssigneeTab.value\n );\n // TODO: Remove the usage of useCamelCase after migrating useFilter to camelcase\n if (statusFilter) {\n appliedFilter.value = [...appliedFilter.value, useCamelCase(statusFilter)];\n }\n\n // TODO: Remove the usage of useCamelCase after migrating useFilter to camelcase\n const otherFilters = initializeInboxTeamAndLabelFilterToModal(\n props.conversationInbox,\n inbox.value,\n props.teamId,\n activeTeam.value,\n props.label\n ).map(useCamelCase);\n\n appliedFilter.value = [...appliedFilter.value, ...otherFilters];\n}\n\nfunction initializeFolderToFilterModal(newActiveFolder) {\n // Here we are setting the params for edit folder modal.\n // To show the existing values. when we click on edit folder button.\n\n // Here we get the query from the active folder.\n // And we are mapping the query to the actual values.\n // To show in the edit folder modal by the help of generateValuesForEditCustomViews helper.\n const query = unref(newActiveFolder)?.query?.payload;\n if (!Array.isArray(query)) return;\n\n const newFilters = query.map(filter => {\n const transformed = useCamelCase(filter);\n const values = Array.isArray(transformed.values)\n ? generateValuesForEditCustomViews(\n useSnakeCase(filter),\n setParamsForEditFolderModal()\n )\n : [];\n\n return {\n attributeKey: transformed.attributeKey,\n attributeModel: transformed.attributeModel,\n customAttributeType: transformed.customAttributeType,\n filterOperator: transformed.filterOperator,\n queryOperator: transformed.queryOperator ?? 'and',\n values,\n };\n });\n\n appliedFilter.value = [...appliedFilter.value, ...newFilters];\n}\n\nfunction initalizeAppliedFiltersToModal() {\n appliedFilter.value = [...appliedFilters.value];\n}\n\nfunction onToggleAdvanceFiltersModal() {\n if (showAdvancedFilters.value === true) {\n closeAdvanceFiltersModal();\n return;\n }\n\n if (!hasAppliedFilters.value && !hasActiveFolders.value) {\n initializeExistingFilterToModal();\n }\n if (hasActiveFolders.value) {\n initializeFolderToFilterModal(activeFolder.value);\n }\n if (hasAppliedFilters.value) {\n initalizeAppliedFiltersToModal();\n }\n\n showAdvancedFilters.value = true;\n}\n\nfunction fetchConversations() {\n store.dispatch('updateChatListFilters', conversationFilters.value);\n store.dispatch('fetchAllConversations').then(emitConversationLoaded);\n}\n\nfunction resetAndFetchData() {\n appliedFilter.value = [];\n resetBulkActions();\n store.dispatch('conversationPage/reset');\n store.dispatch('emptyAllConversations');\n store.dispatch('clearConversationFilters');\n if (hasActiveFolders.value) {\n const payload = activeFolder.value.query;\n fetchSavedFilteredConversations(payload);\n }\n if (props.foldersId) {\n return;\n }\n fetchConversations();\n}\n\nfunction loadMoreConversations() {\n if (hasCurrentPageEndReached.value || chatListLoading.value) {\n return;\n }\n\n if (!hasAppliedFiltersOrActiveFolders.value) {\n fetchConversations();\n } else if (hasActiveFolders.value) {\n const payload = activeFolder.value.query;\n fetchSavedFilteredConversations(payload);\n } else if (hasAppliedFilters.value) {\n fetchFilteredConversations(appliedFilters.value);\n }\n}\n\n// Add a method to handle scroll events\nfunction handleScroll() {\n const scroller = conversationDynamicScroller.value;\n if (scroller && scroller.hasScrollbar) {\n const { scrollTop, scrollHeight, clientHeight } = scroller.$el;\n if (scrollHeight - (scrollTop + clientHeight) < 100) {\n loadMoreConversations();\n }\n }\n}\n\nfunction updateAssigneeTab(selectedTab) {\n if (activeAssigneeTab.value !== selectedTab) {\n resetBulkActions();\n emitter.emit('clearSearchInput');\n activeAssigneeTab.value = selectedTab;\n if (!currentPage.value) {\n fetchConversations();\n }\n }\n}\n\nfunction onBasicFilterChange(value, type) {\n if (type === 'status') {\n activeStatus.value = value;\n } else {\n activeSortBy.value = value;\n }\n resetAndFetchData();\n}\n\nfunction openLastSavedItemInFolder() {\n const lastItemOfFolder = folders.value[folders.value.length - 1];\n const lastItemId = lastItemOfFolder.id;\n router.push({\n name: 'folder_conversations',\n params: { id: lastItemId },\n });\n}\n\nfunction openLastItemAfterDeleteInFolder() {\n if (folders.value.length > 0) {\n openLastSavedItemInFolder();\n } else {\n router.push({ name: 'home' });\n fetchConversations();\n }\n}\n\nfunction redirectToConversationList() {\n const {\n params: { accountId, inbox_id: inboxId, label, teamId },\n name,\n } = route;\n\n let conversationType = '';\n if (isOnMentionsView({ route: { name } })) {\n conversationType = 'mention';\n } else if (isOnUnattendedView({ route: { name } })) {\n conversationType = 'unattended';\n }\n router.push(\n conversationListPageURL({\n accountId,\n conversationType: conversationType,\n customViewId: props.foldersId,\n inboxId,\n label,\n teamId,\n })\n );\n}\n\nasync function assignPriority(priority, conversationId = null) {\n store.dispatch('setCurrentChatPriority', {\n priority,\n conversationId,\n });\n store.dispatch('assignPriority', { conversationId, priority }).then(() => {\n useTrack(CONVERSATION_EVENTS.CHANGE_PRIORITY, {\n newValue: priority,\n from: 'Context menu',\n });\n useAlert(\n t('CONVERSATION.PRIORITY.CHANGE_PRIORITY.SUCCESSFUL', {\n priority,\n conversationId,\n })\n );\n });\n}\n\nasync function markAsUnread(conversationId) {\n try {\n await store.dispatch('markMessagesUnread', {\n id: conversationId,\n });\n redirectToConversationList();\n } catch (error) {\n // Ignore error\n }\n}\nasync function markAsRead(conversationId) {\n try {\n await store.dispatch('markMessagesRead', {\n id: conversationId,\n });\n } catch (error) {\n // Ignore error\n }\n}\n\nasync function onAssignTeam(team, conversationId = null) {\n try {\n await store.dispatch('assignTeam', {\n conversationId,\n teamId: team.id,\n });\n useAlert(\n t('CONVERSATION.CARD_CONTEXT_MENU.API.TEAM_ASSIGNMENT.SUCCESFUL', {\n team: team.name,\n conversationId,\n })\n );\n } catch (error) {\n useAlert(t('CONVERSATION.CARD_CONTEXT_MENU.API.TEAM_ASSIGNMENT.FAILED'));\n }\n}\n\nfunction toggleConversationStatus(conversationId, status, snoozedUntil) {\n store\n .dispatch('toggleStatus', {\n conversationId,\n status,\n snoozedUntil,\n })\n .then(() => {\n useAlert(t('CONVERSATION.CHANGE_STATUS'));\n });\n}\n\nfunction allSelectedConversationsStatus(status) {\n if (!selectedConversations.value.length) return false;\n return selectedConversations.value.every(item => {\n return store.getters.getConversationById(item)?.status === status;\n });\n}\n\nfunction onContextMenuToggle(state) {\n isContextMenuOpen.value = state;\n}\n\nfunction toggleSelectAll(check) {\n selectAllConversations(check, conversationList);\n}\n\nuseEmitter('fetch_conversation_stats', () => {\n if (hasAppliedFiltersOrActiveFolders.value) return;\n store.dispatch('conversationStats/get', conversationFilters.value);\n});\n\nuseEventListener(conversationDynamicScroller, 'scroll', handleScroll);\n\nonMounted(() => {\n store.dispatch('setChatListFilters', conversationFilters.value);\n setFiltersFromUISettings();\n store.dispatch('setChatStatusFilter', activeStatus.value);\n store.dispatch('setChatSortFilter', activeSortBy.value);\n resetAndFetchData();\n if (hasActiveFolders.value) {\n store.dispatch('campaigns/get');\n }\n});\n\nconst deleteConversationDialogRef = ref(null);\nconst selectedConversationId = ref(null);\n\nasync function deleteConversation() {\n try {\n await store.dispatch('deleteConversation', selectedConversationId.value);\n redirectToConversationList();\n selectedConversationId.value = null;\n deleteConversationDialogRef.value.close();\n useAlert(t('CONVERSATION.SUCCESS_DELETE_CONVERSATION'));\n } catch (error) {\n useAlert(t('CONVERSATION.FAIL_DELETE_CONVERSATION'));\n }\n}\n\nconst handleDelete = conversationId => {\n selectedConversationId.value = conversationId;\n deleteConversationDialogRef.value.open();\n};\n\nprovide('selectConversation', selectConversation);\nprovide('deSelectConversation', deSelectConversation);\nprovide('assignAgent', onAssignAgent);\nprovide('assignTeam', onAssignTeam);\nprovide('assignLabels', onAssignLabels);\nprovide('updateConversationStatus', toggleConversationStatus);\nprovide('toggleContextMenu', onContextMenuToggle);\nprovide('markAsUnread', markAsUnread);\nprovide('markAsRead', markAsRead);\nprovide('assignPriority', assignPriority);\nprovide('isConversationSelected', isConversationSelected);\nprovide('deleteConversation', handleDelete);\n\nwatch(activeTeam, () => resetAndFetchData());\n\nwatch(\n computed(() => props.conversationInbox),\n () => resetAndFetchData()\n);\nwatch(\n computed(() => props.label),\n () => resetAndFetchData()\n);\nwatch(\n computed(() => props.conversationType),\n () => resetAndFetchData()\n);\n\nwatch(activeFolder, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n store.dispatch('customViews/setActiveConversationFolder', newVal || null);\n }\n resetAndFetchData();\n});\n\nwatch(chatLists, () => {\n chatsOnView.value = conversationList.value;\n});\n\nwatch(conversationFilters, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n store.dispatch('updateChatListFilters', newVal);\n }\n});\n</script>\n\n<template>\n <div\n class=\"flex flex-col flex-shrink-0 bg-n-solid-1 conversations-list-wrap\"\n :class=\"[\n { hidden: !showConversationList },\n isOnExpandedLayout ? 'basis-full' : 'w-[340px] 2xl:w-[412px]',\n ]\"\n >\n <slot />\n <ChatListHeader\n :page-title=\"pageTitle\"\n :has-applied-filters=\"hasAppliedFilters\"\n :has-active-folders=\"hasActiveFolders\"\n :active-status=\"activeStatus\"\n :is-on-expanded-layout=\"isOnExpandedLayout\"\n :conversation-stats=\"conversationStats\"\n :is-list-loading=\"chatListLoading && !conversationList.length\"\n @add-folders=\"onClickOpenAddFoldersModal\"\n @delete-folders=\"onClickOpenDeleteFoldersModal\"\n @filters-modal=\"onToggleAdvanceFiltersModal\"\n @reset-filters=\"resetAndFetchData\"\n @basic-filter-change=\"onBasicFilterChange\"\n />\n\n <TeleportWithDirection\n v-if=\"showAddFoldersModal\"\n to=\"#saveFilterTeleportTarget\"\n >\n <SaveCustomView\n v-model=\"appliedFilter\"\n :custom-views-query=\"foldersQuery\"\n :open-last-saved-item=\"openLastSavedItemInFolder\"\n @close=\"onCloseAddFoldersModal\"\n />\n </TeleportWithDirection>\n\n <DeleteCustomViews\n v-if=\"showDeleteFoldersModal\"\n v-model:show=\"showDeleteFoldersModal\"\n :active-custom-view=\"activeFolder\"\n :custom-views-id=\"foldersId\"\n :open-last-item-after-delete=\"openLastItemAfterDeleteInFolder\"\n @close=\"onCloseDeleteFoldersModal\"\n />\n\n <ChatTypeTabs\n v-if=\"!hasAppliedFiltersOrActiveFolders\"\n :items=\"assigneeTabItems\"\n :active-tab=\"activeAssigneeTab\"\n is-compact\n @chat-tab-change=\"updateAssigneeTab\"\n />\n\n <p\n v-if=\"!chatListLoading && !conversationList.length\"\n class=\"flex items-center justify-center p-4 overflow-auto\"\n >\n {{ $t('CHAT_LIST.LIST.404') }}\n </p>\n <ConversationBulkActions\n v-if=\"selectedConversations.length\"\n :conversations=\"selectedConversations\"\n :all-conversations-selected=\"allConversationsSelected\"\n :selected-inboxes=\"uniqueInboxes\"\n :show-open-action=\"allSelectedConversationsStatus('open')\"\n :show-resolved-action=\"allSelectedConversationsStatus('resolved')\"\n :show-snoozed-action=\"allSelectedConversationsStatus('snoozed')\"\n @select-all-conversations=\"toggleSelectAll\"\n @assign-agent=\"onAssignAgent\"\n @update-conversations=\"onUpdateConversations\"\n @assign-labels=\"onAssignLabels\"\n @assign-team=\"onAssignTeamsForBulk\"\n />\n <div\n ref=\"conversationListRef\"\n class=\"flex-1 overflow-hidden conversations-list hover:overflow-y-auto\"\n :class=\"{ 'overflow-hidden': isContextMenuOpen }\"\n >\n <DynamicScroller\n ref=\"conversationDynamicScroller\"\n :items=\"conversationList\"\n :min-item-size=\"24\"\n class=\"w-full h-full overflow-auto\"\n >\n <template #default=\"{ item, index, active }\">\n <!--\n If we encounter resizing issues, we can set the `watchData` prop to true\n this will deeply watch the entire object instead of just size dependencies\n But it can impact performance\n -->\n <DynamicScrollerItem\n :item=\"item\"\n :active=\"active\"\n :data-index=\"index\"\n :size-dependencies=\"[\n item.messages,\n item.labels,\n item.uuid,\n item.inbox_id,\n ]\"\n >\n <ConversationItem\n :source=\"item\"\n :label=\"label\"\n :team-id=\"teamId\"\n :folders-id=\"foldersId\"\n :conversation-type=\"conversationType\"\n :show-assignee=\"showAssigneeInConversationCard\"\n @select-conversation=\"selectConversation\"\n @de-select-conversation=\"deSelectConversation\"\n />\n </DynamicScrollerItem>\n </template>\n <template #after>\n <div v-if=\"chatListLoading\" class=\"flex justify-center my-4\">\n <Spinner class=\"text-n-brand\" />\n </div>\n <p\n v-else-if=\"showEndOfListMessage\"\n class=\"p-4 text-center text-n-slate-11\"\n >\n {{ $t('CHAT_LIST.EOF') }}\n </p>\n <IntersectionObserver\n v-else\n :options=\"intersectionObserverOptions\"\n @observed=\"loadMoreConversations\"\n />\n </template>\n </DynamicScroller>\n </div>\n <Dialog\n ref=\"deleteConversationDialogRef\"\n type=\"alert\"\n :title=\"\n $t('CONVERSATION.DELETE_CONVERSATION.TITLE', {\n conversationId: selectedConversationId,\n })\n \"\n :description=\"$t('CONVERSATION.DELETE_CONVERSATION.DESCRIPTION')\"\n :confirm-button-label=\"$t('CONVERSATION.DELETE_CONVERSATION.CONFIRM')\"\n @confirm=\"deleteConversation\"\n @close=\"selectedConversationId = null\"\n />\n <TeleportWithDirection\n v-if=\"showAdvancedFilters\"\n to=\"#conversationFilterTeleportTarget\"\n >\n <ConversationFilter\n v-model=\"appliedFilter\"\n :folder-name=\"activeFolderName\"\n :is-folder-view=\"hasActiveFolders\"\n @apply-filter=\"onApplyFilter\"\n @update-folder=\"onUpdateSavedFilter\"\n @close=\"closeAdvanceFiltersModal\"\n />\n </TeleportWithDirection>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ChatListHeader.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.${activeStatus}.TEXT`' dynamic key is used'","line":85,"column":12,"nodeType":"CallExpression","endLine":85,"endColumn":73}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport { formatNumber } from '@chatwoot/utils';\nimport wootConstants from 'dashboard/constants/globals';\n\nimport ConversationBasicFilter from './widgets/conversation/ConversationBasicFilter.vue';\nimport SwitchLayout from 'dashboard/routes/dashboard/conversation/search/SwitchLayout.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n pageTitle: { type: String, required: true },\n hasAppliedFilters: { type: Boolean, required: true },\n hasActiveFolders: { type: Boolean, required: true },\n activeStatus: { type: String, required: true },\n isOnExpandedLayout: { type: Boolean, required: true },\n conversationStats: { type: Object, required: true },\n isListLoading: { type: Boolean, required: true },\n});\n\nconst emit = defineEmits([\n 'addFolders',\n 'deleteFolders',\n 'resetFilters',\n 'basicFilterChange',\n 'filtersModal',\n]);\n\nconst { uiSettings, updateUISettings } = useUISettings();\n\nconst onBasicFilterChange = (value, type) => {\n emit('basicFilterChange', value, type);\n};\n\nconst hasAppliedFiltersOrActiveFolders = computed(() => {\n return props.hasAppliedFilters || props.hasActiveFolders;\n});\n\nconst allCount = computed(() => props.conversationStats?.allCount || 0);\nconst formattedAllCount = computed(() => formatNumber(allCount.value));\n\nconst toggleConversationLayout = () => {\n const { LAYOUT_TYPES } = wootConstants;\n const {\n conversation_display_type: conversationDisplayType = LAYOUT_TYPES.CONDENSED,\n } = uiSettings.value;\n const newViewType =\n conversationDisplayType === LAYOUT_TYPES.CONDENSED\n ? LAYOUT_TYPES.EXPANDED\n : LAYOUT_TYPES.CONDENSED;\n updateUISettings({\n conversation_display_type: newViewType,\n previously_used_conversation_display_type: newViewType,\n });\n};\n</script>\n\n<template>\n <div\n class=\"flex items-center justify-between gap-2 px-3 h-12\"\n :class=\"{\n 'border-b border-n-strong': hasAppliedFiltersOrActiveFolders,\n }\"\n >\n <div class=\"flex items-center justify-center min-w-0\">\n <h1\n class=\"text-base font-medium truncate text-n-slate-12\"\n :title=\"pageTitle\"\n >\n {{ pageTitle }}\n </h1>\n <span\n v-if=\"\n allCount > 0 && hasAppliedFiltersOrActiveFolders && !isListLoading\n \"\n class=\"px-2 py-1 my-0.5 mx-1 rounded-md capitalize bg-n-slate-3 text-xxs text-n-slate-12 shrink-0\"\n :title=\"allCount\"\n >\n {{ formattedAllCount }}\n </span>\n <span\n v-if=\"!hasAppliedFiltersOrActiveFolders\"\n class=\"px-2 py-1 my-0.5 mx-1 rounded-md capitalize bg-n-slate-3 text-xxs text-n-slate-12 shrink-0\"\n >\n {{ $t(`CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.${activeStatus}.TEXT`) }}\n </span>\n </div>\n <div class=\"flex items-center gap-1\">\n <template v-if=\"hasAppliedFilters && !hasActiveFolders\">\n <div class=\"relative\">\n <NextButton\n v-tooltip.top-end=\"$t('FILTER.CUSTOM_VIEWS.ADD.SAVE_BUTTON')\"\n icon=\"i-lucide-save\"\n slate\n xs\n faded\n @click=\"emit('addFolders')\"\n />\n <div\n id=\"saveFilterTeleportTarget\"\n class=\"absolute z-50 mt-2\"\n :class=\"{ 'ltr:right-0 rtl:left-0': isOnExpandedLayout }\"\n />\n </div>\n <NextButton\n v-tooltip.top-end=\"$t('FILTER.CLEAR_BUTTON_LABEL')\"\n icon=\"i-lucide-circle-x\"\n ruby\n faded\n xs\n @click=\"emit('resetFilters')\"\n />\n </template>\n <template v-if=\"hasActiveFolders\">\n <div class=\"relative\">\n <NextButton\n id=\"toggleConversationFilterButton\"\n v-tooltip.top-end=\"$t('FILTER.CUSTOM_VIEWS.EDIT.EDIT_BUTTON')\"\n icon=\"i-lucide-pen-line\"\n slate\n xs\n faded\n @click=\"emit('filtersModal')\"\n />\n <div\n id=\"conversationFilterTeleportTarget\"\n class=\"absolute z-50 mt-2\"\n :class=\"{ 'ltr:right-0 rtl:left-0': isOnExpandedLayout }\"\n />\n </div>\n <NextButton\n id=\"toggleConversationFilterButton\"\n v-tooltip.top-end=\"$t('FILTER.CUSTOM_VIEWS.DELETE.DELETE_BUTTON')\"\n icon=\"i-lucide-trash-2\"\n ruby\n xs\n faded\n @click=\"emit('deleteFolders')\"\n />\n </template>\n <div v-else class=\"relative\">\n <NextButton\n id=\"toggleConversationFilterButton\"\n v-tooltip.right=\"$t('FILTER.TOOLTIP_LABEL')\"\n icon=\"i-lucide-list-filter\"\n slate\n xs\n faded\n @click=\"emit('filtersModal')\"\n />\n <div\n id=\"conversationFilterTeleportTarget\"\n class=\"absolute z-50 mt-2\"\n :class=\"{ 'ltr:right-0 rtl:left-0': isOnExpandedLayout }\"\n />\n </div>\n <ConversationBasicFilter\n v-if=\"!hasAppliedFiltersOrActiveFolders\"\n :is-on-expanded-layout=\"isOnExpandedLayout\"\n @change-filter=\"onBasicFilterChange\"\n />\n <SwitchLayout\n :is-on-expanded-layout=\"isOnExpandedLayout\"\n @toggle=\"toggleConversationLayout\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/Code.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ConversationItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/CustomAttribute.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/CustomBrandPolicyWrapper.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/CustomSnoozeModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/FormSection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/IntersectionObserver.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/Modal.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":63,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":63,"endColumn":17,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"warn"},"fix":{"range":[1722,1835],"text":""},"desc":"Remove the console.warn()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ModalHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/NetworkNotification.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/SettingsSection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/Snackbar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/SnackbarContainer.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'originalMessage' dynamic key is used'","line":32,"column":37,"nodeType":"CallExpression","endLine":32,"endColumn":55}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, onMounted, onUnmounted, nextTick } from 'vue';\nimport WootSnackbar from './Snackbar.vue';\nimport { emitter } from 'shared/helpers/mitt';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n duration: {\n type: Number,\n default: 2500,\n },\n});\n\nconst { t } = useI18n();\n\nconst snackMessages = ref([]);\nconst snackbarContainer = ref(null);\n\nconst showPopover = () => {\n try {\n const el = snackbarContainer.value;\n if (el?.matches(':popover-open')) {\n el.hidePopover();\n }\n el?.showPopover();\n } catch (e) {\n // ignore\n }\n};\n\nconst onNewToastMessage = ({ message: originalMessage, action }) => {\n const message = action?.usei18n ? t(originalMessage) : originalMessage;\n const duration = action?.duration || props.duration;\n\n snackMessages.value.push({\n key: Date.now(),\n message,\n action,\n });\n\n nextTick(showPopover);\n\n setTimeout(() => {\n snackMessages.value.shift();\n }, duration);\n};\n\nonMounted(() => {\n emitter.on('newToastMessage', onNewToastMessage);\n});\n\nonUnmounted(() => {\n emitter.off('newToastMessage', onNewToastMessage);\n});\n</script>\n\n<template>\n <div\n ref=\"snackbarContainer\"\n popover=\"manual\"\n class=\"fixed top-4 left-1/2 -translate-x-1/2 max-w-[25rem] w-[calc(100%-2rem)] text-center bg-transparent border-0 p-0 m-0 outline-none overflow-visible\"\n >\n <transition-group name=\"toast-fade\" tag=\"div\">\n <WootSnackbar\n v-for=\"snackMessage in snackMessages\"\n :key=\"snackMessage.key\"\n :message=\"snackMessage.message\"\n :action=\"snackMessage.action\"\n />\n </transition-group>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/app/AddAccountModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/app/PaymentPendingBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/app/PendingEmailVerificationBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/app/UpdateBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/app/specs/versionCheckHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/app/versionCheckHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/auth/MfaVerification.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MFA_VERIFICATION.${method===OTP?'AUTHENTICATOR_APP':'BACKUP_CODE'}`' dynamic key is used'","line":192,"column":13,"nodeType":"CallExpression","endLine":194,"endColumn":14},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MFA_VERIFICATION.HELP_MODAL.${section}_TITLE`' dynamic key is used'","line":315,"column":16,"nodeType":"CallExpression","endLine":315,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MFA_VERIFICATION.HELP_MODAL.${section}_DESC`' dynamic key is used'","line":317,"column":17,"nodeType":"CallExpression","endLine":317,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MFA_VERIFICATION.HELP_MODAL.${contactDescKey}`' dynamic key is used'","line":323,"column":17,"nodeType":"CallExpression","endLine":323,"endColumn":68}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport axios from 'axios';\nimport { ref, computed, nextTick } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { handleOtpPaste } from 'shared/helpers/clipboard';\nimport { parseAPIErrorResponse } from 'dashboard/store/utils/api';\nimport { useAccount } from 'dashboard/composables/useAccount';\n\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport FormInput from 'v3/components/Form/Input.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\nimport Dialog from 'dashboard/components-next/dialog/Dialog.vue';\n\nconst props = defineProps({\n mfaToken: {\n type: String,\n required: true,\n },\n});\n\nconst emit = defineEmits(['verified', 'cancel']);\n\nconst { t } = useI18n();\nconst { isOnChatwootCloud } = useAccount();\n\nconst OTP = 'otp';\nconst BACKUP = 'backup';\n\n// State\nconst verificationMethod = ref(OTP);\nconst otpDigits = ref(['', '', '', '', '', '']);\nconst backupCode = ref('');\nconst isVerifying = ref(false);\nconst errorMessage = ref('');\nconst helpModalRef = ref(null);\nconst otpInputRefs = ref([]);\n\n// Computed\nconst otpCode = computed(() => otpDigits.value.join(''));\nconst canSubmit = computed(() =>\n verificationMethod.value === OTP\n ? otpCode.value.length === 6\n : backupCode.value.length === 8\n);\n\nconst contactDescKey = computed(() =>\n isOnChatwootCloud.value ? 'CONTACT_DESC_CLOUD' : 'CONTACT_DESC_SELF_HOSTED'\n);\n\nconst focusInput = i => otpInputRefs.value[i]?.focus();\n\n// Verification\nconst handleVerification = async () => {\n if (!canSubmit.value || isVerifying.value) return;\n\n isVerifying.value = true;\n errorMessage.value = '';\n\n try {\n const payload = {\n mfa_token: props.mfaToken,\n };\n\n if (verificationMethod.value === OTP) {\n payload.otp_code = otpCode.value;\n } else {\n payload.backup_code = backupCode.value;\n }\n\n const response = await axios.post('/auth/sign_in', payload);\n\n // Set auth credentials and redirect\n if (response.data && response.headers) {\n // Store auth credentials in cookies\n const authData = {\n 'access-token': response.headers['access-token'],\n 'token-type': response.headers['token-type'],\n client: response.headers.client,\n expiry: response.headers.expiry,\n uid: response.headers.uid,\n };\n\n // Store in cookies for auth\n document.cookie = `cw_d_session_info=${encodeURIComponent(JSON.stringify(authData))}; path=/; SameSite=Lax`;\n\n // Redirect to dashboard\n window.location.href = '/app/';\n } else {\n emit('verified', response.data);\n }\n } catch (error) {\n errorMessage.value =\n parseAPIErrorResponse(error) || t('MFA_VERIFICATION.VERIFICATION_FAILED');\n\n // Clear inputs on error\n if (verificationMethod.value === OTP) {\n otpDigits.value.fill('');\n await nextTick();\n focusInput(0);\n } else {\n backupCode.value = '';\n }\n } finally {\n isVerifying.value = false;\n }\n};\n\n// OTP Input Handling\nconst handleOtpInput = async i => {\n const v = otpDigits.value[i];\n\n // Only allow numbers\n if (!/^\\d*$/.test(v)) {\n otpDigits.value[i] = '';\n return;\n }\n\n // Move to next input if value entered\n if (v && i < 5) {\n await nextTick();\n focusInput(i + 1);\n }\n\n // Auto-submit if all digits entered\n if (otpCode.value.length === 6) {\n handleVerification();\n }\n};\n\nconst handleBackspace = (e, i) => {\n if (!otpDigits.value[i] && i > 0) {\n e.preventDefault();\n focusInput(i - 1);\n otpDigits.value[i - 1] = '';\n }\n};\n\nconst handleOtpCodePaste = e => {\n e.preventDefault();\n const code = handleOtpPaste(e, 6);\n\n if (code) {\n otpDigits.value = code.split('');\n handleVerification();\n }\n};\n\n// Alternative Actions\nconst handleTryAnotherMethod = () => {\n // Toggle between methods\n verificationMethod.value = verificationMethod.value === OTP ? BACKUP : OTP;\n otpDigits.value.fill('');\n backupCode.value = '';\n errorMessage.value = '';\n};\n</script>\n\n<template>\n <div class=\"w-full max-w-md mx-auto\">\n <div\n class=\"bg-white shadow sm:mx-auto sm:w-full sm:max-w-lg dark:bg-n-solid-2 p-11 sm:shadow-lg sm:rounded-lg\"\n >\n <!-- Header -->\n <div class=\"text-center mb-6\">\n <div\n class=\"inline-flex items-center justify-center size-14 bg-n-solid-1 outline outline-n-weak rounded-full mb-4\"\n >\n <Icon icon=\"i-lucide-lock-keyhole\" class=\"size-6 text-n-slate-10\" />\n </div>\n <h2 class=\"text-2xl font-semibold text-n-slate-12\">\n {{ $t('MFA_VERIFICATION.TITLE') }}\n </h2>\n <p class=\"text-sm text-n-slate-11 mt-2\">\n {{ $t('MFA_VERIFICATION.DESCRIPTION') }}\n </p>\n </div>\n\n <!-- Tab Selection -->\n <div class=\"flex rounded-lg bg-n-alpha-black2 p-1 mb-6\">\n <button\n v-for=\"method in [OTP, BACKUP]\"\n :key=\"method\"\n class=\"flex-1 py-2 px-4 text-sm font-medium rounded-md transition-colors\"\n :class=\"\n verificationMethod === method\n ? 'bg-n-solid-active text-n-slate-12 shadow-sm'\n : 'text-n-slate-12'\n \"\n @click=\"verificationMethod = method\"\n >\n {{\n $t(\n `MFA_VERIFICATION.${method === OTP ? 'AUTHENTICATOR_APP' : 'BACKUP_CODE'}`\n )\n }}\n </button>\n </div>\n\n <!-- Verification Form -->\n <form class=\"space-y-4\" @submit.prevent=\"handleVerification\">\n <!-- OTP Code Input -->\n <div v-if=\"verificationMethod === OTP\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n {{ $t('MFA_VERIFICATION.ENTER_OTP_CODE') }}\n </label>\n <div class=\"flex justify-between gap-2\">\n <input\n v-for=\"(_, i) in otpDigits\"\n :key=\"i\"\n ref=\"otpInputRefs\"\n v-model=\"otpDigits[i]\"\n type=\"text\"\n maxlength=\"1\"\n pattern=\"[0-9]\"\n inputmode=\"numeric\"\n class=\"w-12 h-12 text-center text-lg font-semibold border-2 border-n-weak hover:border-n-strong rounded-lg focus:border-n-brand bg-n-alpha-black2 text-n-slate-12 placeholder:text-n-slate-10\"\n @input=\"handleOtpInput(i)\"\n @keydown.left.prevent=\"focusInput(i - 1)\"\n @keydown.right.prevent=\"focusInput(i + 1)\"\n @keydown.backspace=\"handleBackspace($event, i)\"\n @paste=\"handleOtpCodePaste\"\n />\n </div>\n </div>\n\n <!-- Backup Code Input -->\n <div v-if=\"verificationMethod === BACKUP\">\n <FormInput\n v-model=\"backupCode\"\n name=\"backup_code\"\n type=\"text\"\n data-testid=\"backup_code_input\"\n :tabindex=\"1\"\n required\n :label=\"$t('MFA_VERIFICATION.ENTER_BACKUP_CODE')\"\n :placeholder=\"\n $t('MFA_VERIFICATION.BACKUP_CODE_PLACEHOLDER') || '000000'\n \"\n @keyup.enter=\"handleVerification\"\n />\n </div>\n\n <!-- Error Message -->\n <div\n v-if=\"errorMessage\"\n class=\"p-3 bg-n-ruby-3 outline outline-n-ruby-5 outline-1 rounded-lg\"\n >\n <p class=\"text-sm text-n-ruby-9\">{{ errorMessage }}</p>\n </div>\n\n <!-- Submit Button -->\n <NextButton\n lg\n type=\"submit\"\n data-testid=\"submit_button\"\n class=\"w-full\"\n :tabindex=\"2\"\n :label=\"$t('MFA_VERIFICATION.VERIFY_BUTTON')\"\n :disabled=\"!canSubmit || isVerifying\"\n :is-loading=\"isVerifying\"\n />\n\n <!-- Alternative Actions -->\n <div class=\"text-center flex items-center flex-col gap-2 pt-4\">\n <NextButton\n sm\n link\n type=\"button\"\n class=\"w-full hover:!no-underline\"\n :tabindex=\"2\"\n :label=\"$t('MFA_VERIFICATION.TRY_ANOTHER_METHOD')\"\n @click=\"handleTryAnotherMethod\"\n />\n <NextButton\n sm\n slate\n link\n type=\"button\"\n class=\"w-full hover:!no-underline\"\n :tabindex=\"3\"\n :label=\"$t('MFA_VERIFICATION.CANCEL_LOGIN')\"\n @click=\"() => emit('cancel')\"\n />\n </div>\n </form>\n </div>\n\n <!-- Help Text -->\n <div class=\"mt-6 text-center\">\n <p class=\"text-sm text-n-slate-11\">\n {{ $t('MFA_VERIFICATION.HELP_TEXT') }}\n </p>\n <NextButton\n sm\n link\n type=\"button\"\n class=\"w-full hover:!no-underline\"\n :tabindex=\"4\"\n :label=\"$t('MFA_VERIFICATION.LEARN_MORE')\"\n @click=\"helpModalRef?.open()\"\n />\n </div>\n\n <!-- Help Modal -->\n <Dialog\n ref=\"helpModalRef\"\n :title=\"$t('MFA_VERIFICATION.HELP_MODAL.TITLE')\"\n :show-confirm-button=\"false\"\n class=\"[&>dialog>div]:bg-n-alpha-3 [&>dialog>div]:rounded-lg\"\n @confirm=\"helpModalRef?.close()\"\n >\n <div class=\"space-y-4 text-sm text-n-slate-11\">\n <div v-for=\"section in ['AUTHENTICATOR', 'BACKUP']\" :key=\"section\">\n <h4 class=\"font-medium text-n-slate-12 mb-2\">\n {{ $t(`MFA_VERIFICATION.HELP_MODAL.${section}_TITLE`) }}\n </h4>\n <p>{{ $t(`MFA_VERIFICATION.HELP_MODAL.${section}_DESC`) }}</p>\n </div>\n <div>\n <h4 class=\"font-medium text-n-slate-12 mb-2\">\n {{ $t('MFA_VERIFICATION.HELP_MODAL.CONTACT_TITLE') }}\n </h4>\n <p>{{ $t(`MFA_VERIFICATION.HELP_MODAL.${contactDescKey}`) }}</p>\n </div>\n </div>\n </Dialog>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/base/Hotkey.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/buttons/ResolveAction.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/copilot/CopilotContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/policy.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/table/BaseCell.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' --- ' is used","line":22,"column":42,"nodeType":null,"endLine":22,"endColumn":47,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,482],"text":"<i18n>\n{\n \"en\": {\n \" --- \": \" --- \"\n }\n}\n</i18n>\n\n<script setup>\nimport { useMapGetter } from 'dashboard/composables/store';\n\ndefineProps({\n content: {\n type: String,\n default: '',\n },\n});\n\nconst isRTL = useMapGetter('accounts/isRTL');\n</script>\n\n<template>\n <div\n class=\"overflow-hidden whitespace-nowrap text-ellipsis\"\n :class=\"{ 'text-right': isRTL }\"\n >\n <slot v-if=\"$slots.default || content\">\n <template v-if=\"content\">{{ content }}</template>\n </slot>\n <span v-else class=\"text-n-slate-10\">{{$t(' --- ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useMapGetter } from 'dashboard/composables/store';\n\ndefineProps({\n content: {\n type: String,\n default: '',\n },\n});\n\nconst isRTL = useMapGetter('accounts/isRTL');\n</script>\n\n<template>\n <div\n class=\"overflow-hidden whitespace-nowrap text-ellipsis\"\n :class=\"{ 'text-right': isRTL }\"\n >\n <slot v-if=\"$slots.default || content\">\n <template v-if=\"content\">{{ content }}</template>\n </slot>\n <span v-else class=\"text-n-slate-10\"> --- </span>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/table/Pagination.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/table/SortButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/table/Table.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Banner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/ContextMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/DatePicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarAction.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarDateInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarDateRange.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'range.label' dynamic key is used'","line":37,"column":12,"nodeType":"CallExpression","endLine":37,"endColumn":27}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { dateRanges } from '../helpers/DatePickerHelper';\n\ndefineProps({\n selectedRange: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['setRange']);\n\nconst setDateRange = range => {\n emit('setRange', range);\n};\n</script>\n\n<template>\n <div class=\"w-[200px] flex flex-col items-start\">\n <h4\n class=\"w-full px-5 py-4 text-sm font-medium capitalize text-start text-n-slate-12\"\n >\n {{ $t('DATE_PICKER.DATE_RANGE_OPTIONS.TITLE') }}\n </h4>\n <div class=\"flex flex-col items-start w-full\">\n <button\n v-for=\"range in dateRanges\"\n :key=\"range.label\"\n class=\"w-full px-5 py-3 text-sm font-medium truncate border-none rounded-none text-start hover:bg-n-alpha-2 dark:hover:bg-n-solid-3\"\n :class=\"\n range.value === selectedRange\n ? 'text-n-slate-12 bg-n-alpha-1 dark:bg-n-solid-active'\n : 'text-n-slate-12'\n \"\n @click=\"setDateRange(range)\"\n >\n {{ $t(range.label) }}\n </button>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarFooter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarMonth.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarWeek.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarWeekLabel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/CalendarYear.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/components/DatePickerButton.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'activeDateRange' dynamic key is used'","line":56,"column":10,"nodeType":"CallExpression","endLine":56,"endColumn":29}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { dateRanges } from '../helpers/DatePickerHelper';\nimport { format, isSameYear, isValid } from 'date-fns';\n\nconst props = defineProps({\n selectedStartDate: Date,\n selectedEndDate: Date,\n selectedRange: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['open']);\n\nconst formatDateRange = computed(() => {\n const startDate = props.selectedStartDate;\n const endDate = props.selectedEndDate;\n\n if (!isValid(startDate) || !isValid(endDate)) {\n return 'Select a date range';\n }\n\n const formatString = isSameYear(startDate, endDate)\n ? 'MMM d' // Same year: \"Apr 1\"\n : 'MMM d yyyy'; // Different years: \"Apr 1 2025\"\n\n if (isSameYear(startDate, new Date()) && isSameYear(endDate, new Date())) {\n // Both dates are in the current year\n return `${format(startDate, 'MMM d')} - ${format(endDate, 'MMM d')}`;\n }\n // At least one date is not in the current year\n return `${format(startDate, formatString)} - ${format(\n endDate,\n formatString\n )}`;\n});\n\nconst activeDateRange = computed(\n () => dateRanges.find(range => range.value === props.selectedRange).label\n);\n\nconst openDatePicker = () => {\n emit('open');\n};\n</script>\n\n<template>\n <button\n class=\"inline-flex relative items-center rounded-lg gap-2 py-1.5 px-3 h-8 bg-n-alpha-2 hover:bg-n-alpha-1 active:bg-n-alpha-1\"\n @click=\"openDatePicker\"\n >\n <fluent-icon class=\"text-n-slate-12\" icon=\"calendar\" size=\"16\" />\n <span class=\"text-sm font-medium text-n-slate-12\">\n {{ $t(activeDateRange) }}\n </span>\n <span class=\"text-sm font-medium text-n-slate-11\">\n {{ formatDateRange }}\n </span>\n <fluent-icon class=\"text-n-slate-12\" icon=\"chevron-down\" size=\"14\" />\n </button>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/helpers/DatePickerHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DatePicker/helpers/specs/DatePickerHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DateRangePicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/DateTimePicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Dropdown/DropdownButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Dropdown/DropdownEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Dropdown/DropdownList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Dropdown/DropdownListItemButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Dropdown/DropdownLoadingState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Dropdown/DropdownSearch.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/HelperTextPopup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Label.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/PreviewCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Tabs/Tabs.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Tabs/TabsItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/TimeAgo.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/ui/Wizard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AIAssistanceCTAButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AIAssistanceModal.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.${translationKey}`' dynamic key is used'","line":35,"column":21,"nodeType":"CallExpression","endLine":37,"endColumn":14}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useMessageFormatter } from 'shared/composables/useMessageFormatter';\nimport { useAI } from 'dashboard/composables/useAI';\nimport AILoader from './AILoader.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n AILoader,\n NextButton,\n },\n props: {\n aiOption: {\n type: String,\n required: true,\n },\n },\n emits: ['close', 'applyText'],\n setup() {\n const { formatMessage } = useMessageFormatter();\n const { draftMessage, processEvent, recordAnalytics } = useAI();\n return { draftMessage, processEvent, recordAnalytics, formatMessage };\n },\n data() {\n return {\n generatedContent: '',\n isGenerating: true,\n };\n },\n computed: {\n headerTitle() {\n const translationKey = this.aiOption?.toUpperCase();\n return translationKey\n ? this.$t(`INTEGRATION_SETTINGS.OPEN_AI.WITH_AI`, {\n option: this.$t(\n `INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.${translationKey}`\n ),\n })\n : '';\n },\n },\n mounted() {\n this.generateAIContent(this.aiOption);\n },\n\n methods: {\n onClose() {\n this.$emit('close');\n },\n\n async generateAIContent(type = 'rephrase') {\n this.isGenerating = true;\n this.generatedContent = await this.processEvent(type);\n this.isGenerating = false;\n },\n applyText() {\n this.recordAnalytics(this.aiOption);\n this.$emit('applyText', this.generatedContent);\n this.onClose();\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <woot-modal-header :header-title=\"headerTitle\" />\n <form\n class=\"flex flex-col w-full modal-content\"\n @submit.prevent=\"applyText\"\n >\n <div v-if=\"draftMessage\" class=\"w-full\">\n <h4 class=\"mt-1 text-base text-n-slate-12\">\n {{ $t('INTEGRATION_SETTINGS.OPEN_AI.ASSISTANCE_MODAL.DRAFT_TITLE') }}\n </h4>\n <p v-dompurify-html=\"formatMessage(draftMessage, false)\" />\n <h4 class=\"mt-1 text-base text-n-slate-12\">\n {{\n $t('INTEGRATION_SETTINGS.OPEN_AI.ASSISTANCE_MODAL.GENERATED_TITLE')\n }}\n </h4>\n </div>\n <div>\n <AILoader v-if=\"isGenerating\" />\n <p v-else v-dompurify-html=\"formatMessage(generatedContent, false)\" />\n </div>\n\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"\n $t('INTEGRATION_SETTINGS.OPEN_AI.ASSISTANCE_MODAL.BUTTONS.CANCEL')\n \"\n @click.prevent=\"onClose\"\n />\n <NextButton\n type=\"submit\"\n :disabled=\"!generatedContent\"\n :label=\"\n $t('INTEGRATION_SETTINGS.OPEN_AI.ASSISTANCE_MODAL.BUTTONS.APPLY')\n \"\n />\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.modal-content {\n @apply pt-2 px-8 pb-8;\n}\n\n.container {\n width: 100%;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AICTAModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AILoader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AttachmentsPreview.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n 📄\n ' is used","line":61,"column":73,"nodeType":null,"endLine":63,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1665],"text":"<i18n>\n{\n \"en\": {\n \"\\n 📄\\n \": \"\\n 📄\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { formatBytes } from 'shared/helpers/FileHelper';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n attachments: {\n type: Array,\n default: () => [],\n },\n});\n\nconst emit = defineEmits(['removeAttachment']);\n\nconst nonRecordedAudioAttachments = computed(() => {\n return props.attachments.filter(attachment => !attachment?.isRecordedAudio);\n});\n\nconst recordedAudioAttachments = computed(() =>\n props.attachments.filter(attachment => attachment.isRecordedAudio)\n);\n\nconst onRemoveAttachment = itemIndex => {\n emit(\n 'removeAttachment',\n nonRecordedAudioAttachments.value\n .filter((_, index) => index !== itemIndex)\n .concat(recordedAudioAttachments.value)\n );\n};\n\nconst formatFileSize = file => {\n const size = file.byte_size || file.size;\n return formatBytes(size, 0);\n};\n\nconst isTypeImage = file => {\n const type = file.content_type || file.type;\n return type.includes('image');\n};\n\nconst fileName = file => {\n return file.filename || file.name;\n};\n</script>\n\n<template>\n <div class=\"flex overflow-auto max-h-[12.5rem]\">\n <div\n v-for=\"(attachment, index) in nonRecordedAudioAttachments\"\n :key=\"attachment.id\"\n class=\"flex items-center p-1 bg-n-slate-3 gap-1 rounded-md w-[15rem] mb-1\"\n >\n <div class=\"max-w-[4rem] flex-shrink-0 w-6 flex items-center\">\n <img\n v-if=\"isTypeImage(attachment.resource)\"\n class=\"object-cover w-6 h-6 rounded-sm\"\n :src=\"attachment.thumb\"\n />\n <span v-else class=\"relative w-6 h-6 text-lg text-left -top-px\">{{$t(`\n 📄\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { formatBytes } from 'shared/helpers/FileHelper';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n attachments: {\n type: Array,\n default: () => [],\n },\n});\n\nconst emit = defineEmits(['removeAttachment']);\n\nconst nonRecordedAudioAttachments = computed(() => {\n return props.attachments.filter(attachment => !attachment?.isRecordedAudio);\n});\n\nconst recordedAudioAttachments = computed(() =>\n props.attachments.filter(attachment => attachment.isRecordedAudio)\n);\n\nconst onRemoveAttachment = itemIndex => {\n emit(\n 'removeAttachment',\n nonRecordedAudioAttachments.value\n .filter((_, index) => index !== itemIndex)\n .concat(recordedAudioAttachments.value)\n );\n};\n\nconst formatFileSize = file => {\n const size = file.byte_size || file.size;\n return formatBytes(size, 0);\n};\n\nconst isTypeImage = file => {\n const type = file.content_type || file.type;\n return type.includes('image');\n};\n\nconst fileName = file => {\n return file.filename || file.name;\n};\n</script>\n\n<template>\n <div class=\"flex overflow-auto max-h-[12.5rem]\">\n <div\n v-for=\"(attachment, index) in nonRecordedAudioAttachments\"\n :key=\"attachment.id\"\n class=\"flex items-center p-1 bg-n-slate-3 gap-1 rounded-md w-[15rem] mb-1\"\n >\n <div class=\"max-w-[4rem] flex-shrink-0 w-6 flex items-center\">\n <img\n v-if=\"isTypeImage(attachment.resource)\"\n class=\"object-cover w-6 h-6 rounded-sm\"\n :src=\"attachment.thumb\"\n />\n <span v-else class=\"relative w-6 h-6 text-lg text-left -top-px\">\n 📄\n </span>\n </div>\n <div class=\"max-w-3/5 min-w-[50%] overflow-hidden text-ellipsis\">\n <span\n class=\"h-4 overflow-hidden text-sm font-medium text-ellipsis whitespace-nowrap\"\n >\n {{ fileName(attachment.resource) }}\n </span>\n </div>\n <div class=\"w-[30%] justify-center\">\n <span class=\"overflow-hidden text-xs text-ellipsis whitespace-nowrap\">\n {{ formatFileSize(attachment.resource) }}\n </span>\n </div>\n <div class=\"flex items-center justify-center\">\n <Button\n ghost\n slate\n xs\n icon=\"i-lucide-x\"\n @click=\"onRemoveAttachment(index)\"\n />\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AutomationActionInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AutomationActionTeamMessageInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/AutomationFileInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/BackButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/ChannelItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/ChatTypeTabs.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/ColorPicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/DashboardApp/Frame.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/EmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/FeatureToggle.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/FilterInput/FilterOperatorTypes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/FilterInput/FilterOperatorTypes.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/FilterInput/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`FILTER.OPERATOR_LABELS.${operator.value}`' dynamic key is used'","line":193,"column":16,"nodeType":"CallExpression","endLine":193,"endColumn":62}],"suppressedMessages":[{"ruleId":"vue/no-mutating-props","severity":2,"message":"Unexpected mutation of \"modelValue\" prop.","line":119,"column":11,"nodeType":"AssignmentExpression","messageId":"unexpectedMutation","endLine":119,"endColumn":75,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-mutating-props","severity":2,"message":"Unexpected mutation of \"modelValue\" prop.","line":121,"column":16,"nodeType":"AssignmentExpression","messageId":"unexpectedMutation","endLine":121,"endColumn":58,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n name: 'FilterInput',\n components: {\n NextButton,\n },\n props: {\n modelValue: {\n type: Object,\n default: () => {},\n },\n filterAttributes: {\n type: Array,\n default: () => [],\n },\n inputType: {\n type: String,\n default: 'plain_text',\n },\n operators: {\n type: Array,\n default: () => [],\n },\n dropdownValues: {\n type: Array,\n default: () => [],\n },\n showQueryOperator: {\n type: Boolean,\n default: false,\n },\n showUserInput: {\n type: Boolean,\n default: true,\n },\n groupedFilters: {\n type: Boolean,\n default: false,\n },\n filterGroups: {\n type: Array,\n default: () => [],\n },\n customAttributeType: {\n type: String,\n default: '',\n },\n errorMessage: {\n type: String,\n default: '',\n },\n },\n emits: ['update:modelValue', 'removeFilter', 'resetFilter'],\n computed: {\n attributeKey: {\n get() {\n if (!this.modelValue) return null;\n return this.modelValue.attribute_key;\n },\n set(value) {\n const payload = this.modelValue || {};\n this.$emit('update:modelValue', { ...payload, attribute_key: value });\n },\n },\n filterOperator: {\n get() {\n if (!this.modelValue) return null;\n return this.modelValue.filter_operator;\n },\n set(value) {\n const payload = this.modelValue || {};\n this.$emit('update:modelValue', { ...payload, filter_operator: value });\n },\n },\n values: {\n get() {\n if (!this.modelValue) return null;\n return this.modelValue.values;\n },\n set(value) {\n const payload = this.modelValue || {};\n this.$emit('update:modelValue', { ...payload, values: value });\n },\n },\n query_operator: {\n get() {\n if (!this.modelValue) return null;\n return this.modelValue.query_operator;\n },\n set(value) {\n const payload = this.modelValue || {};\n this.$emit('update:modelValue', { ...payload, query_operator: value });\n },\n },\n custom_attribute_type: {\n get() {\n if (!this.customAttributeType) return '';\n return this.customAttributeType;\n },\n set() {\n const payload = this.modelValue || {};\n this.$emit('update:modelValue', {\n ...payload,\n custom_attribute_type: this.customAttributeType,\n });\n },\n },\n },\n watch: {\n customAttributeType: {\n handler(value) {\n if (\n value === 'conversation_attribute' ||\n value === 'contact_attribute'\n ) {\n // eslint-disable-next-line vue/no-mutating-props\n this.modelValue.custom_attribute_type = this.customAttributeType;\n // eslint-disable-next-line vue/no-mutating-props\n } else this.modelValue.custom_attribute_type = '';\n },\n immediate: true,\n },\n },\n methods: {\n removeFilter() {\n this.$emit('removeFilter');\n },\n resetFilter() {\n this.$emit('resetFilter');\n },\n getInputErrorClass(errorMessage) {\n return errorMessage\n ? 'bg-n-ruby-8/20 border-n-ruby-5 dark:border-n-ruby-5'\n : 'bg-n-background border-n-weak dark:border-n-weak';\n },\n },\n};\n</script>\n\n<!-- eslint-disable vue/no-mutating-props -->\n<template>\n <div>\n <div\n class=\"p-2 border border-solid rounded-lg\"\n :class=\"getInputErrorClass(errorMessage)\"\n >\n <div class=\"flex gap-1\">\n <select\n v-if=\"groupedFilters\"\n v-model=\"attributeKey\"\n class=\"max-w-[30%] mb-0 mr-1\"\n @change=\"resetFilter()\"\n >\n <optgroup\n v-for=\"(group, i) in filterGroups\"\n :key=\"i\"\n :label=\"group.name\"\n >\n <option\n v-for=\"attribute in group.attributes\"\n :key=\"attribute.key\"\n :value=\"attribute.key\"\n :selected=\"true\"\n >\n {{ attribute.name }}\n </option>\n </optgroup>\n </select>\n <select\n v-else\n v-model=\"attributeKey\"\n class=\"max-w-[30%] mb-0 mr-1\"\n @change=\"resetFilter()\"\n >\n <option\n v-for=\"attribute in filterAttributes\"\n :key=\"attribute.key\"\n :value=\"attribute.key\"\n :disabled=\"attribute.disabled\"\n >\n {{ attribute.name }}\n </option>\n </select>\n\n <select v-model=\"filterOperator\" class=\"max-w-[20%] mb-0 mr-1\">\n <option\n v-for=\"(operator, o) in operators\"\n :key=\"o\"\n :value=\"operator.value\"\n >\n {{ $t(`FILTER.OPERATOR_LABELS.${operator.value}`) }}\n </option>\n </select>\n\n <div v-if=\"showUserInput\" class=\"flex-grow mr-1 filter__answer--wrap\">\n <div\n v-if=\"inputType === 'multi_select'\"\n class=\"multiselect-wrap--small\"\n >\n <multiselect\n v-model=\"values\"\n track-by=\"id\"\n label=\"name\"\n :placeholder=\"$t('FORMS.MULTISELECT.SELECT')\"\n multiple\n selected-label\n :select-label=\"$t('FORMS.MULTISELECT.ENTER_TO_SELECT')\"\n deselect-label=\"\"\n :max-height=\"160\"\n :options=\"dropdownValues\"\n :allow-empty=\"false\"\n >\n <template #noOptions>\n {{ $t('FORMS.MULTISELECT.NO_OPTIONS') }}\n </template>\n </multiselect>\n </div>\n <div\n v-else-if=\"inputType === 'search_select'\"\n class=\"multiselect-wrap--small\"\n >\n <multiselect\n v-model=\"values\"\n track-by=\"id\"\n label=\"name\"\n :placeholder=\"$t('FORMS.MULTISELECT.SELECT')\"\n selected-label\n :select-label=\"$t('FORMS.MULTISELECT.ENTER_TO_SELECT')\"\n deselect-label=\"\"\n :max-height=\"160\"\n :options=\"dropdownValues\"\n :allow-empty=\"false\"\n :option-height=\"104\"\n >\n <template #noOptions>\n {{ $t('FORMS.MULTISELECT.NO_OPTIONS') }}\n </template>\n </multiselect>\n </div>\n <div v-else-if=\"inputType === 'date'\" class=\"multiselect-wrap--small\">\n <input\n v-model=\"values\"\n type=\"date\"\n :editable=\"false\"\n class=\"!mb-0 datepicker\"\n />\n </div>\n <input\n v-else\n v-model=\"values\"\n type=\"text\"\n class=\"!mb-0\"\n :placeholder=\"$t('FILTER.INPUT_PLACEHOLDER')\"\n />\n </div>\n <NextButton\n icon=\"i-lucide-x\"\n slate\n ghost\n class=\"flex-shrink-0\"\n @click=\"removeFilter\"\n />\n </div>\n <p v-if=\"errorMessage\" class=\"filter-error\">\n {{ errorMessage }}\n </p>\n </div>\n\n <div\n v-if=\"showQueryOperator\"\n class=\"flex items-center justify-center relative my-2.5 mx-0\"\n >\n <hr class=\"absolute w-full border-b border-solid border-n-weak\" />\n <select\n v-model=\"query_operator\"\n class=\"relative w-auto mb-0 bg-n-background text-n-slate-12 border-n-weak\"\n >\n <option value=\"and\">\n {{ $t('FILTER.QUERY_DROPDOWN_LABELS.AND') }}\n </option>\n <option value=\"or\">\n {{ $t('FILTER.QUERY_DROPDOWN_LABELS.OR') }}\n </option>\n </select>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.filter__answer--wrap {\n input {\n @apply bg-n-background mb-0 text-n-slate-12 border-n-weak;\n }\n}\n\n.filter-error {\n @apply text-n-ruby-9 dark:text-n-ruby-9 block my-1 mx-0;\n}\n\n.multiselect {\n @apply mb-0;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/FloatingCallWidget.vue","messages":[{"ruleId":"vue/no-root-v-if","severity":1,"message":"`v-if` should not be used on root element without `v-else`.","line":89,"column":1,"nodeType":"VElement","messageId":"noRootVIf","endLine":184,"endColumn":12}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { watch } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useStore } from 'vuex';\nimport { useCallSession } from 'dashboard/composables/useCallSession';\nimport WindowVisibilityHelper from 'dashboard/helper/AudioAlerts/WindowVisibilityHelper';\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\n\nconst router = useRouter();\nconst store = useStore();\n\nconst {\n activeCall,\n incomingCalls,\n hasActiveCall,\n isJoining,\n joinCall,\n endCall: endCallSession,\n rejectIncomingCall,\n dismissCall,\n formattedCallDuration,\n} = useCallSession();\n\nconst getCallInfo = call => {\n const conversation = store.getters.getConversationById(call?.conversationId);\n const inbox = store.getters['inboxes/getInbox'](conversation?.inbox_id);\n const sender = conversation?.meta?.sender;\n return {\n conversation,\n inbox,\n contactName: sender?.name || sender?.phone_number || 'Unknown caller',\n inboxName: inbox?.name || 'Customer support',\n avatar: sender?.avatar || sender?.thumbnail,\n };\n};\n\nconst handleEndCall = async () => {\n const call = activeCall.value;\n if (!call) return;\n\n const inboxId = call.inboxId || getCallInfo(call).conversation?.inbox_id;\n if (!inboxId) return;\n\n await endCallSession({\n conversationId: call.conversationId,\n inboxId,\n });\n};\n\nconst handleJoinCall = async call => {\n const { conversation } = getCallInfo(call);\n if (!call || !conversation || isJoining.value) return;\n\n // End current active call before joining new one\n if (hasActiveCall.value) {\n await handleEndCall();\n }\n\n const result = await joinCall({\n conversationId: call.conversationId,\n inboxId: conversation.inbox_id,\n callSid: call.callSid,\n });\n\n if (result) {\n router.push({\n name: 'inbox_conversation',\n params: { conversation_id: call.conversationId },\n });\n }\n};\n\n// Auto-join outbound calls when window is visible\nwatch(\n () => incomingCalls.value[0],\n call => {\n if (\n call?.callDirection === 'outbound' &&\n !hasActiveCall.value &&\n WindowVisibilityHelper.isWindowVisible()\n ) {\n handleJoinCall(call);\n }\n },\n { immediate: true }\n);\n</script>\n\n<template>\n <div\n v-if=\"incomingCalls.length || hasActiveCall\"\n class=\"fixed ltr:right-4 rtl:left-4 bottom-4 z-50 flex flex-col gap-2 w-72\"\n >\n <!-- Incoming Calls (shown above active call) -->\n <div\n v-for=\"call in hasActiveCall ? incomingCalls : []\"\n :key=\"call.callSid\"\n class=\"flex items-center gap-3 p-4 bg-n-solid-2 rounded-xl shadow-xl outline outline-1 outline-n-strong\"\n >\n <div class=\"animate-pulse ring-2 ring-n-teal-9 rounded-full inline-flex\">\n <Avatar\n :src=\"getCallInfo(call).avatar\"\n :name=\"getCallInfo(call).contactName\"\n :size=\"40\"\n rounded-full\n />\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-medium text-n-slate-12 truncate mb-0\">\n {{ getCallInfo(call).contactName }}\n </p>\n <p class=\"text-xs text-n-slate-11 truncate\">\n {{ getCallInfo(call).inboxName }}\n </p>\n </div>\n <div class=\"flex shrink-0 gap-2\">\n <button\n class=\"flex justify-center items-center w-10 h-10 bg-n-ruby-9 hover:bg-n-ruby-10 rounded-full transition-colors\"\n @click=\"dismissCall(call.callSid)\"\n >\n <i class=\"text-lg text-white i-ph-phone-x-bold\" />\n </button>\n <button\n class=\"flex justify-center items-center w-10 h-10 bg-n-teal-9 hover:bg-n-teal-10 rounded-full transition-colors\"\n @click=\"handleJoinCall(call)\"\n >\n <i class=\"text-lg text-white i-ph-phone-bold\" />\n </button>\n </div>\n </div>\n\n <!-- Main Call Widget -->\n <div\n v-if=\"hasActiveCall || incomingCalls.length\"\n class=\"flex items-center gap-3 p-4 bg-n-solid-2 rounded-xl shadow-xl outline outline-1 outline-n-strong\"\n >\n <div\n class=\"ring-2 ring-n-teal-9 rounded-full inline-flex\"\n :class=\"{ 'animate-pulse': !hasActiveCall }\"\n >\n <Avatar\n :src=\"getCallInfo(activeCall || incomingCalls[0]).avatar\"\n :name=\"getCallInfo(activeCall || incomingCalls[0]).contactName\"\n :size=\"40\"\n rounded-full\n />\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-medium text-n-slate-12 truncate mb-0\">\n {{ getCallInfo(activeCall || incomingCalls[0]).contactName }}\n </p>\n <p v-if=\"hasActiveCall\" class=\"font-mono text-sm text-n-teal-9\">\n {{ formattedCallDuration }}\n </p>\n <p v-else class=\"text-xs text-n-slate-11\">\n {{\n incomingCalls[0]?.callDirection === 'outbound'\n ? $t('CONVERSATION.VOICE_WIDGET.OUTGOING_CALL')\n : $t('CONVERSATION.VOICE_WIDGET.INCOMING_CALL')\n }}\n </p>\n </div>\n <div class=\"flex shrink-0 gap-2\">\n <button\n class=\"flex justify-center items-center w-10 h-10 bg-n-ruby-9 hover:bg-n-ruby-10 rounded-full transition-colors\"\n @click=\"\n hasActiveCall\n ? handleEndCall()\n : rejectIncomingCall(incomingCalls[0]?.callSid)\n \"\n >\n <i class=\"text-lg text-white i-ph-phone-x-bold\" />\n </button>\n <button\n v-if=\"!hasActiveCall\"\n class=\"flex justify-center items-center w-10 h-10 bg-n-teal-9 hover:bg-n-teal-10 rounded-full transition-colors\"\n @click=\"handleJoinCall(incomingCalls[0])\"\n >\n <i class=\"text-lg text-white i-ph-phone-bold\" />\n </button>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/InboxName.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/LoadingState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/SettingIntroBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/ShowMore.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`COMPONENTS.SHOW_MORE_BLOCK.${i18nKey}`' dynamic key is used'","line":27,"column":10,"nodeType":"CallExpression","endLine":27,"endColumn":52}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n text: {\n type: String,\n default: '',\n },\n limit: {\n type: Number,\n default: 120,\n },\n});\nconst { t } = useI18n();\nconst showMore = ref(false);\n\nconst textToBeDisplayed = computed(() => {\n if (showMore.value || props.text.length <= props.limit) {\n return props.text;\n }\n\n return props.text.slice(0, props.limit) + '...';\n});\nconst buttonLabel = computed(() => {\n const i18nKey = !showMore.value ? 'SHOW_MORE' : 'SHOW_LESS';\n return t(`COMPONENTS.SHOW_MORE_BLOCK.${i18nKey}`);\n});\n\nconst toggleShowMore = () => {\n showMore.value = !showMore.value;\n};\n</script>\n\n<template>\n <span>\n {{ textToBeDisplayed }}\n <button\n v-if=\"text.length > limit\"\n class=\"text-n-brand !p-0 !border-0 align-top\"\n @click=\"toggleShowMore\"\n >\n {{ buttonLabel }}\n </button>\n </span>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/TableFooter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/TableFooterPagination.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '/' is used","line":81,"column":37,"nodeType":null,"endLine":81,"endColumn":38,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1941],"text":"<i18n>\n{\n \"en\": {\n \"/\": \"/\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n currentPage: {\n type: Number,\n default: 1,\n },\n totalPages: {\n type: Number,\n default: 0,\n },\n});\n\nconst emit = defineEmits(['pageChange']);\nconst hasLastPage = computed(\n () => props.currentPage === props.totalPages || props.totalPages === 1\n);\nconst hasFirstPage = computed(() => props.currentPage === 1);\nconst hasNextPage = computed(() => props.currentPage === props.totalPages);\nconst hasPrevPage = computed(() => props.currentPage === 1);\n\nfunction onPageChange(newPage) {\n emit('pageChange', newPage);\n}\n\nconst onNextPage = () => {\n if (!onNextPage.value) {\n onPageChange(props.currentPage + 1);\n }\n};\nconst onPrevPage = () => {\n if (!hasPrevPage.value) {\n onPageChange(props.currentPage - 1);\n }\n};\nconst onFirstPage = () => {\n if (!hasFirstPage.value) {\n onPageChange(1);\n }\n};\nconst onLastPage = () => {\n if (!hasLastPage.value) {\n onPageChange(props.totalPages);\n }\n};\n</script>\n\n<template>\n <div\n class=\"flex items-center h-8 outline outline-1 outline-n-weak rounded-lg\"\n >\n <NextButton\n faded\n sm\n slate\n icon=\"i-lucide-chevrons-left\"\n class=\"ltr:rounded-l-lg ltr:rounded-r-none rtl:rounded-r-lg rtl:rounded-l-none\"\n :disabled=\"hasFirstPage\"\n @click=\"onFirstPage\"\n />\n <div class=\"flex items-center justify-center bg-n-slate-9/10 h-full\">\n <div class=\"w-px h-4 rounded-sm bg-n-strong\" />\n </div>\n <NextButton\n faded\n sm\n slate\n icon=\"i-lucide-chevron-left\"\n class=\"rounded-none\"\n :disabled=\"hasPrevPage\"\n @click=\"onPrevPage\"\n />\n <div\n class=\"flex items-center gap-3 px-3 tabular-nums bg-n-slate-9/10 h-full\"\n >\n <span class=\"text-sm text-n-slate-12\">\n {{ currentPage }}\n </span>\n <span class=\"text-n-slate-11\">{{$t('/')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n currentPage: {\n type: Number,\n default: 1,\n },\n totalPages: {\n type: Number,\n default: 0,\n },\n});\n\nconst emit = defineEmits(['pageChange']);\nconst hasLastPage = computed(\n () => props.currentPage === props.totalPages || props.totalPages === 1\n);\nconst hasFirstPage = computed(() => props.currentPage === 1);\nconst hasNextPage = computed(() => props.currentPage === props.totalPages);\nconst hasPrevPage = computed(() => props.currentPage === 1);\n\nfunction onPageChange(newPage) {\n emit('pageChange', newPage);\n}\n\nconst onNextPage = () => {\n if (!onNextPage.value) {\n onPageChange(props.currentPage + 1);\n }\n};\nconst onPrevPage = () => {\n if (!hasPrevPage.value) {\n onPageChange(props.currentPage - 1);\n }\n};\nconst onFirstPage = () => {\n if (!hasFirstPage.value) {\n onPageChange(1);\n }\n};\nconst onLastPage = () => {\n if (!hasLastPage.value) {\n onPageChange(props.totalPages);\n }\n};\n</script>\n\n<template>\n <div\n class=\"flex items-center h-8 outline outline-1 outline-n-weak rounded-lg\"\n >\n <NextButton\n faded\n sm\n slate\n icon=\"i-lucide-chevrons-left\"\n class=\"ltr:rounded-l-lg ltr:rounded-r-none rtl:rounded-r-lg rtl:rounded-l-none\"\n :disabled=\"hasFirstPage\"\n @click=\"onFirstPage\"\n />\n <div class=\"flex items-center justify-center bg-n-slate-9/10 h-full\">\n <div class=\"w-px h-4 rounded-sm bg-n-strong\" />\n </div>\n <NextButton\n faded\n sm\n slate\n icon=\"i-lucide-chevron-left\"\n class=\"rounded-none\"\n :disabled=\"hasPrevPage\"\n @click=\"onPrevPage\"\n />\n <div\n class=\"flex items-center gap-3 px-3 tabular-nums bg-n-slate-9/10 h-full\"\n >\n <span class=\"text-sm text-n-slate-12\">\n {{ currentPage }}\n </span>\n <span class=\"text-n-slate-11\">/</span>\n <span class=\"text-sm text-n-slate-11\">\n {{ totalPages }}\n </span>\n </div>\n <NextButton\n faded\n sm\n slate\n icon=\"i-lucide-chevron-right\"\n class=\"rounded-none\"\n :disabled=\"hasNextPage\"\n @click=\"onNextPage\"\n />\n <div class=\"flex items-center justify-center bg-n-slate-9/10 h-full\">\n <div class=\"w-px h-4 rounded-sm bg-n-strong\" />\n </div>\n <NextButton\n faded\n sm\n slate\n icon=\"i-lucide-chevrons-right\"\n class=\"ltr:rounded-r-lg ltr:rounded-l-none rtl:rounded-l-lg rtl:rounded-r-none\"\n :disabled=\"hasLastPage\"\n @click=\"onLastPage\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/TableFooterResults.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/TableHeaderCell.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/ThumbnailGroup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/UserAvatarWithName.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/VideoCallButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/AudioRecorder.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/EditorModeToggle.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/FullEditor.vue","messages":[],"suppressedMessages":[{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":22,"column":3,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":22,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":24,"column":3,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":24,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/ReplyBottomPanel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/ReplyTopPanel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/keyboardEmojiSelector.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n :' is used","line":64,"column":10,"nodeType":null,"endLine":65,"endColumn":12,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1611],"text":"<i18n>\n{\n \"en\": {\n \"\\n :\": \"\\n :\"\n }\n}\n</i18n>\n\n<script setup>\nimport { shallowRef, computed, onMounted } from 'vue';\nimport emojiGroups from 'shared/components/emoji/emojisGroup.json';\nimport MentionBox from '../mentions/MentionBox.vue';\n\nconst props = defineProps({\n searchKey: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['selectEmoji']);\n\nconst allEmojis = shallowRef([]);\n\nconst items = computed(() => {\n if (!props.searchKey) return [];\n const searchTerm = props.searchKey.toLowerCase();\n return allEmojis.value.filter(emoji =>\n emoji.searchString.includes(searchTerm)\n );\n});\n\nfunction loadEmojis() {\n allEmojis.value = emojiGroups.flatMap(({ emojis }) =>\n emojis.map(({ name, slug, ...rest }) => ({\n ...rest,\n name,\n slug,\n searchString: `${name.replace(/\\s+/g, '')} ${slug}`.toLowerCase(), // Remove all whitespace and convert to lowercase\n }))\n );\n}\n\nfunction handleMentionClick(item = {}) {\n emit('selectEmoji', item.emoji);\n}\n\nonMounted(() => {\n loadEmojis();\n});\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <MentionBox\n v-if=\"items.length\"\n type=\"emoji\"\n :items=\"items\"\n @mention-select=\"handleMentionClick\"\n >\n <template #default=\"{ item, selected }\">\n <span\n class=\"max-w-full inline-flex items-center gap-0.5 min-w-0 mb-0 text-sm font-medium text-n-slate-12 group-hover:text-n-brand truncate\"\n >\n {{ item.emoji }}\n <p\n class=\"relative mb-0 truncate bottom-px\"\n :class=\"{\n 'text-n-brand': selected,\n 'font-normal': !selected,\n }\"\n >{{$t(`\n :`)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { shallowRef, computed, onMounted } from 'vue';\nimport emojiGroups from 'shared/components/emoji/emojisGroup.json';\nimport MentionBox from '../mentions/MentionBox.vue';\n\nconst props = defineProps({\n searchKey: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['selectEmoji']);\n\nconst allEmojis = shallowRef([]);\n\nconst items = computed(() => {\n if (!props.searchKey) return [];\n const searchTerm = props.searchKey.toLowerCase();\n return allEmojis.value.filter(emoji =>\n emoji.searchString.includes(searchTerm)\n );\n});\n\nfunction loadEmojis() {\n allEmojis.value = emojiGroups.flatMap(({ emojis }) =>\n emojis.map(({ name, slug, ...rest }) => ({\n ...rest,\n name,\n slug,\n searchString: `${name.replace(/\\s+/g, '')} ${slug}`.toLowerCase(), // Remove all whitespace and convert to lowercase\n }))\n );\n}\n\nfunction handleMentionClick(item = {}) {\n emit('selectEmoji', item.emoji);\n}\n\nonMounted(() => {\n loadEmojis();\n});\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <MentionBox\n v-if=\"items.length\"\n type=\"emoji\"\n :items=\"items\"\n @mention-select=\"handleMentionClick\"\n >\n <template #default=\"{ item, selected }\">\n <span\n class=\"max-w-full inline-flex items-center gap-0.5 min-w-0 mb-0 text-sm font-medium text-n-slate-12 group-hover:text-n-brand truncate\"\n >\n {{ item.emoji }}\n <p\n class=\"relative mb-0 truncate bottom-px\"\n :class=\"{\n 'text-n-brand': selected,\n 'font-normal': !selected,\n }\"\n >\n :{{ item.name }}\n </p>\n </span>\n </template>\n </MentionBox>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/WootWriter/utils/mp3ConversionUtils.js","messages":[],"suppressedMessages":[{"ruleId":"no-plusplus","severity":2,"message":"Unary operator '++' used.","line":5,"column":38,"nodeType":"UpdateExpression","messageId":"unexpectedUnaryOp","endLine":5,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-plusplus","severity":2,"message":"Unary operator '++' used.","line":33,"column":38,"nodeType":"UpdateExpression","messageId":"unexpectedUnaryOp","endLine":33,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-plusplus","severity":2,"message":"Unary operator '++' used.","line":35,"column":50,"nodeType":"UpdateExpression","messageId":"unexpectedUnaryOp","endLine":35,"endColumn":59,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/CannedResponse.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ContentTemplates/ContentTemplatesModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ContentTemplates/ContentTemplatesPicker.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ConversationBasicFilter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ConversationBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '9+' is used","line":358,"column":32,"nodeType":null,"endLine":358,"endColumn":36,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,10772],"text":"<i18n>\n{\n \"en\": {\n \"9+\": \"9+\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed, ref } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { getLastMessage } from 'dashboard/helper/conversationHelper';\nimport { frontendURL, conversationUrl } from 'dashboard/helper/URLHelper';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport MessagePreview from './MessagePreview.vue';\nimport InboxName from '../InboxName.vue';\nimport ConversationContextMenu from './contextMenu/Index.vue';\nimport TimeAgo from 'dashboard/components/ui/TimeAgo.vue';\nimport CardLabels from './conversationCardComponents/CardLabels.vue';\nimport PriorityMark from './PriorityMark.vue';\nimport SLACardLabel from './components/SLACardLabel.vue';\nimport ContextMenu from 'dashboard/components/ui/ContextMenu.vue';\nimport VoiceCallStatus from './VoiceCallStatus.vue';\n\nconst props = defineProps({\n activeLabel: { type: String, default: '' },\n chat: { type: Object, default: () => ({}) },\n hideInboxName: { type: Boolean, default: false },\n hideThumbnail: { type: Boolean, default: false },\n teamId: { type: [String, Number], default: 0 },\n foldersId: { type: [String, Number], default: 0 },\n showAssignee: { type: Boolean, default: false },\n conversationType: { type: String, default: '' },\n selected: { type: Boolean, default: false },\n compact: { type: Boolean, default: false },\n enableContextMenu: { type: Boolean, default: false },\n allowedContextMenuOptions: { type: Array, default: () => [] },\n});\n\nconst emit = defineEmits([\n 'contextMenuToggle',\n 'assignAgent',\n 'assignLabel',\n 'assignTeam',\n 'markAsUnread',\n 'markAsRead',\n 'assignPriority',\n 'updateConversationStatus',\n 'deleteConversation',\n 'selectConversation',\n 'deSelectConversation',\n]);\n\nconst router = useRouter();\nconst store = useStore();\n\nconst hovered = ref(false);\nconst showContextMenu = ref(false);\nconst contextMenu = ref({\n x: null,\n y: null,\n});\n\nconst currentChat = useMapGetter('getSelectedChat');\nconst inboxesList = useMapGetter('inboxes/getInboxes');\nconst activeInbox = useMapGetter('getSelectedInbox');\nconst accountId = useMapGetter('getCurrentAccountId');\n\nconst chatMetadata = computed(() => props.chat.meta || {});\n\nconst assignee = computed(() => chatMetadata.value.assignee || {});\n\nconst senderId = computed(() => chatMetadata.value.sender?.id);\n\nconst currentContact = computed(() => {\n return senderId.value\n ? store.getters['contacts/getContact'](senderId.value)\n : {};\n});\n\nconst isActiveChat = computed(() => {\n return currentChat.value.id === props.chat.id;\n});\n\nconst unreadCount = computed(() => props.chat.unread_count);\n\nconst hasUnread = computed(() => unreadCount.value > 0);\n\nconst isInboxNameVisible = computed(() => !activeInbox.value);\n\nconst lastMessageInChat = computed(() => getLastMessage(props.chat));\n\nconst voiceCallData = computed(() => ({\n status: props.chat.additional_attributes?.call_status,\n direction: props.chat.additional_attributes?.call_direction,\n}));\n\nconst inboxId = computed(() => props.chat.inbox_id);\n\nconst inbox = computed(() => {\n return inboxId.value ? store.getters['inboxes/getInbox'](inboxId.value) : {};\n});\n\nconst showInboxName = computed(() => {\n return (\n !props.hideInboxName &&\n isInboxNameVisible.value &&\n inboxesList.value.length > 1\n );\n});\n\nconst showMetaSection = computed(() => {\n return (\n showInboxName.value ||\n (props.showAssignee && assignee.value.name) ||\n props.chat.priority\n );\n});\n\nconst hasSlaPolicyId = computed(() => props.chat?.sla_policy_id);\n\nconst showLabelsSection = computed(() => {\n return props.chat.labels?.length > 0 || hasSlaPolicyId.value;\n});\n\nconst messagePreviewClass = computed(() => {\n return [\n hasUnread.value ? 'font-medium text-n-slate-12' : 'text-n-slate-11',\n !props.compact && hasUnread.value ? 'ltr:pr-4 rtl:pl-4' : '',\n props.compact && hasUnread.value ? 'ltr:pr-6 rtl:pl-6' : '',\n ];\n});\n\nconst conversationPath = computed(() => {\n return frontendURL(\n conversationUrl({\n accountId: accountId.value,\n activeInbox: activeInbox.value,\n id: props.chat.id,\n label: props.activeLabel,\n teamId: props.teamId,\n conversationType: props.conversationType,\n foldersId: props.foldersId,\n })\n );\n});\n\nconst onCardClick = e => {\n const path = conversationPath.value;\n if (!path) return;\n\n // Handle Ctrl/Cmd + Click for new tab\n if (e.metaKey || e.ctrlKey) {\n e.preventDefault();\n window.open(\n `${window.chatwootConfig.hostURL}${path}`,\n '_blank',\n 'noopener,noreferrer'\n );\n return;\n }\n\n // Skip if already active\n if (isActiveChat.value) return;\n\n router.push({ path });\n};\n\nconst onThumbnailHover = () => {\n hovered.value = !props.hideThumbnail;\n};\n\nconst onThumbnailLeave = () => {\n hovered.value = false;\n};\n\nconst onSelectConversation = checked => {\n if (checked) {\n emit('selectConversation', props.chat.id, inbox.value.id);\n } else {\n emit('deSelectConversation', props.chat.id, inbox.value.id);\n }\n};\n\nconst openContextMenu = e => {\n if (!props.enableContextMenu) return;\n e.preventDefault();\n emit('contextMenuToggle', true);\n contextMenu.value.x = e.pageX || e.clientX;\n contextMenu.value.y = e.pageY || e.clientY;\n showContextMenu.value = true;\n};\n\nconst closeContextMenu = () => {\n emit('contextMenuToggle', false);\n showContextMenu.value = false;\n contextMenu.value.x = null;\n contextMenu.value.y = null;\n};\n\nconst onUpdateConversation = (status, snoozedUntil) => {\n closeContextMenu();\n emit('updateConversationStatus', props.chat.id, status, snoozedUntil);\n};\n\nconst onAssignAgent = agent => {\n emit('assignAgent', agent, [props.chat.id]);\n closeContextMenu();\n};\n\nconst onAssignLabel = label => {\n emit('assignLabel', [label.title], [props.chat.id]);\n closeContextMenu();\n};\n\nconst onAssignTeam = team => {\n emit('assignTeam', team, props.chat.id);\n closeContextMenu();\n};\n\nconst markAsUnread = () => {\n emit('markAsUnread', props.chat.id);\n closeContextMenu();\n};\n\nconst markAsRead = () => {\n emit('markAsRead', props.chat.id);\n closeContextMenu();\n};\n\nconst assignPriority = priority => {\n emit('assignPriority', priority, props.chat.id);\n closeContextMenu();\n};\n\nconst deleteConversation = () => {\n emit('deleteConversation', props.chat.id);\n closeContextMenu();\n};\n</script>\n\n<template>\n <div\n class=\"relative flex items-start flex-grow-0 flex-shrink-0 w-auto max-w-full py-0 border-t-0 border-b-0 border-l-0 border-r-0 border-transparent border-solid cursor-pointer conversation hover:bg-n-alpha-1 dark:hover:bg-n-alpha-3 group\"\n :class=\"{\n 'active animate-card-select bg-n-alpha-1 dark:bg-n-alpha-3 border-n-weak':\n isActiveChat,\n 'bg-n-slate-2 dark:bg-n-slate-3': selected,\n 'px-0': compact,\n 'px-3': !compact,\n }\"\n @click=\"onCardClick\"\n @contextmenu=\"openContextMenu($event)\"\n >\n <div\n class=\"relative\"\n @mouseenter=\"onThumbnailHover\"\n @mouseleave=\"onThumbnailLeave\"\n >\n <Avatar\n v-if=\"!hideThumbnail\"\n :name=\"currentContact.name\"\n :src=\"currentContact.thumbnail\"\n :size=\"32\"\n :status=\"currentContact.availability_status\"\n :class=\"!showInboxName ? 'mt-4' : 'mt-8'\"\n hide-offline-status\n rounded-full\n >\n <template #overlay=\"{ size }\">\n <label\n v-if=\"hovered || selected\"\n class=\"flex items-center justify-center rounded-full cursor-pointer absolute inset-0 z-10 backdrop-blur-[2px]\"\n :style=\"{ width: `${size}px`, height: `${size}px` }\"\n @click.stop\n >\n <input\n :value=\"selected\"\n :checked=\"selected\"\n class=\"!m-0 cursor-pointer\"\n type=\"checkbox\"\n @change=\"onSelectConversation($event.target.checked)\"\n />\n </label>\n </template>\n </Avatar>\n </div>\n <div\n class=\"px-0 py-3 border-b group-hover:border-transparent flex-1 border-n-slate-3 min-w-0\"\n >\n <div\n v-if=\"showMetaSection\"\n class=\"flex items-center min-w-0 gap-1\"\n :class=\"{\n 'ltr:ml-2 rtl:mr-2': !compact,\n 'mx-2': compact,\n }\"\n >\n <InboxName v-if=\"showInboxName\" :inbox=\"inbox\" class=\"flex-1 min-w-0\" />\n <div\n class=\"flex items-center gap-2 flex-shrink-0\"\n :class=\"{\n 'flex-1 justify-between': !showInboxName,\n }\"\n >\n <span\n v-if=\"showAssignee && assignee.name\"\n class=\"text-n-slate-11 text-xs font-medium leading-3 py-0.5 px-0 inline-flex items-center truncate\"\n >\n <fluent-icon icon=\"person\" size=\"12\" class=\"text-n-slate-11\" />\n {{ assignee.name }}\n </span>\n <PriorityMark :priority=\"chat.priority\" class=\"flex-shrink-0\" />\n </div>\n </div>\n <h4\n class=\"conversation--user text-sm my-0 mx-2 capitalize pt-0.5 text-ellipsis overflow-hidden whitespace-nowrap flex-1 min-w-0 ltr:pr-16 rtl:pl-16 text-n-slate-12\"\n :class=\"hasUnread ? 'font-semibold' : 'font-medium'\"\n >\n {{ currentContact.name }}\n </h4>\n <VoiceCallStatus\n v-if=\"voiceCallData.status\"\n key=\"voice-status-row\"\n :status=\"voiceCallData.status\"\n :direction=\"voiceCallData.direction\"\n :message-preview-class=\"messagePreviewClass\"\n />\n <MessagePreview\n v-else-if=\"lastMessageInChat\"\n key=\"message-preview\"\n :message=\"lastMessageInChat\"\n class=\"my-0 mx-2 leading-6 h-6 flex-1 min-w-0 text-sm\"\n :class=\"messagePreviewClass\"\n />\n <p\n v-else\n key=\"no-messages\"\n class=\"text-n-slate-11 text-sm my-0 mx-2 leading-6 h-6 flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\"\n :class=\"messagePreviewClass\"\n >\n <fluent-icon\n size=\"16\"\n class=\"-mt-0.5 align-middle inline-block text-n-slate-10\"\n icon=\"info\"\n />\n <span class=\"mx-0.5\">\n {{ $t(`CHAT_LIST.NO_MESSAGES`) }}\n </span>\n </p>\n <div\n class=\"absolute flex flex-col ltr:right-3 rtl:left-3\"\n :class=\"showMetaSection ? 'top-8' : 'top-4'\"\n >\n <span class=\"ml-auto font-normal leading-4 text-xxs\">\n <TimeAgo\n :last-activity-timestamp=\"chat.timestamp\"\n :created-at-timestamp=\"chat.created_at\"\n />\n </span>\n <span\n class=\"shadow-lg rounded-full text-xxs font-semibold h-4 leading-4 ltr:ml-auto rtl:mr-auto mt-1 min-w-[1rem] px-1 py-0 text-center text-white bg-n-teal-9\"\n :class=\"hasUnread ? 'block' : 'hidden'\"\n >\n {{ unreadCount > 9 ? $t('9+')"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { getLastMessage } from 'dashboard/helper/conversationHelper';\nimport { frontendURL, conversationUrl } from 'dashboard/helper/URLHelper';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport MessagePreview from './MessagePreview.vue';\nimport InboxName from '../InboxName.vue';\nimport ConversationContextMenu from './contextMenu/Index.vue';\nimport TimeAgo from 'dashboard/components/ui/TimeAgo.vue';\nimport CardLabels from './conversationCardComponents/CardLabels.vue';\nimport PriorityMark from './PriorityMark.vue';\nimport SLACardLabel from './components/SLACardLabel.vue';\nimport ContextMenu from 'dashboard/components/ui/ContextMenu.vue';\nimport VoiceCallStatus from './VoiceCallStatus.vue';\n\nconst props = defineProps({\n activeLabel: { type: String, default: '' },\n chat: { type: Object, default: () => ({}) },\n hideInboxName: { type: Boolean, default: false },\n hideThumbnail: { type: Boolean, default: false },\n teamId: { type: [String, Number], default: 0 },\n foldersId: { type: [String, Number], default: 0 },\n showAssignee: { type: Boolean, default: false },\n conversationType: { type: String, default: '' },\n selected: { type: Boolean, default: false },\n compact: { type: Boolean, default: false },\n enableContextMenu: { type: Boolean, default: false },\n allowedContextMenuOptions: { type: Array, default: () => [] },\n});\n\nconst emit = defineEmits([\n 'contextMenuToggle',\n 'assignAgent',\n 'assignLabel',\n 'assignTeam',\n 'markAsUnread',\n 'markAsRead',\n 'assignPriority',\n 'updateConversationStatus',\n 'deleteConversation',\n 'selectConversation',\n 'deSelectConversation',\n]);\n\nconst router = useRouter();\nconst store = useStore();\n\nconst hovered = ref(false);\nconst showContextMenu = ref(false);\nconst contextMenu = ref({\n x: null,\n y: null,\n});\n\nconst currentChat = useMapGetter('getSelectedChat');\nconst inboxesList = useMapGetter('inboxes/getInboxes');\nconst activeInbox = useMapGetter('getSelectedInbox');\nconst accountId = useMapGetter('getCurrentAccountId');\n\nconst chatMetadata = computed(() => props.chat.meta || {});\n\nconst assignee = computed(() => chatMetadata.value.assignee || {});\n\nconst senderId = computed(() => chatMetadata.value.sender?.id);\n\nconst currentContact = computed(() => {\n return senderId.value\n ? store.getters['contacts/getContact'](senderId.value)\n : {};\n});\n\nconst isActiveChat = computed(() => {\n return currentChat.value.id === props.chat.id;\n});\n\nconst unreadCount = computed(() => props.chat.unread_count);\n\nconst hasUnread = computed(() => unreadCount.value > 0);\n\nconst isInboxNameVisible = computed(() => !activeInbox.value);\n\nconst lastMessageInChat = computed(() => getLastMessage(props.chat));\n\nconst voiceCallData = computed(() => ({\n status: props.chat.additional_attributes?.call_status,\n direction: props.chat.additional_attributes?.call_direction,\n}));\n\nconst inboxId = computed(() => props.chat.inbox_id);\n\nconst inbox = computed(() => {\n return inboxId.value ? store.getters['inboxes/getInbox'](inboxId.value) : {};\n});\n\nconst showInboxName = computed(() => {\n return (\n !props.hideInboxName &&\n isInboxNameVisible.value &&\n inboxesList.value.length > 1\n );\n});\n\nconst showMetaSection = computed(() => {\n return (\n showInboxName.value ||\n (props.showAssignee && assignee.value.name) ||\n props.chat.priority\n );\n});\n\nconst hasSlaPolicyId = computed(() => props.chat?.sla_policy_id);\n\nconst showLabelsSection = computed(() => {\n return props.chat.labels?.length > 0 || hasSlaPolicyId.value;\n});\n\nconst messagePreviewClass = computed(() => {\n return [\n hasUnread.value ? 'font-medium text-n-slate-12' : 'text-n-slate-11',\n !props.compact && hasUnread.value ? 'ltr:pr-4 rtl:pl-4' : '',\n props.compact && hasUnread.value ? 'ltr:pr-6 rtl:pl-6' : '',\n ];\n});\n\nconst conversationPath = computed(() => {\n return frontendURL(\n conversationUrl({\n accountId: accountId.value,\n activeInbox: activeInbox.value,\n id: props.chat.id,\n label: props.activeLabel,\n teamId: props.teamId,\n conversationType: props.conversationType,\n foldersId: props.foldersId,\n })\n );\n});\n\nconst onCardClick = e => {\n const path = conversationPath.value;\n if (!path) return;\n\n // Handle Ctrl/Cmd + Click for new tab\n if (e.metaKey || e.ctrlKey) {\n e.preventDefault();\n window.open(\n `${window.chatwootConfig.hostURL}${path}`,\n '_blank',\n 'noopener,noreferrer'\n );\n return;\n }\n\n // Skip if already active\n if (isActiveChat.value) return;\n\n router.push({ path });\n};\n\nconst onThumbnailHover = () => {\n hovered.value = !props.hideThumbnail;\n};\n\nconst onThumbnailLeave = () => {\n hovered.value = false;\n};\n\nconst onSelectConversation = checked => {\n if (checked) {\n emit('selectConversation', props.chat.id, inbox.value.id);\n } else {\n emit('deSelectConversation', props.chat.id, inbox.value.id);\n }\n};\n\nconst openContextMenu = e => {\n if (!props.enableContextMenu) return;\n e.preventDefault();\n emit('contextMenuToggle', true);\n contextMenu.value.x = e.pageX || e.clientX;\n contextMenu.value.y = e.pageY || e.clientY;\n showContextMenu.value = true;\n};\n\nconst closeContextMenu = () => {\n emit('contextMenuToggle', false);\n showContextMenu.value = false;\n contextMenu.value.x = null;\n contextMenu.value.y = null;\n};\n\nconst onUpdateConversation = (status, snoozedUntil) => {\n closeContextMenu();\n emit('updateConversationStatus', props.chat.id, status, snoozedUntil);\n};\n\nconst onAssignAgent = agent => {\n emit('assignAgent', agent, [props.chat.id]);\n closeContextMenu();\n};\n\nconst onAssignLabel = label => {\n emit('assignLabel', [label.title], [props.chat.id]);\n closeContextMenu();\n};\n\nconst onAssignTeam = team => {\n emit('assignTeam', team, props.chat.id);\n closeContextMenu();\n};\n\nconst markAsUnread = () => {\n emit('markAsUnread', props.chat.id);\n closeContextMenu();\n};\n\nconst markAsRead = () => {\n emit('markAsRead', props.chat.id);\n closeContextMenu();\n};\n\nconst assignPriority = priority => {\n emit('assignPriority', priority, props.chat.id);\n closeContextMenu();\n};\n\nconst deleteConversation = () => {\n emit('deleteConversation', props.chat.id);\n closeContextMenu();\n};\n</script>\n\n<template>\n <div\n class=\"relative flex items-start flex-grow-0 flex-shrink-0 w-auto max-w-full py-0 border-t-0 border-b-0 border-l-0 border-r-0 border-transparent border-solid cursor-pointer conversation hover:bg-n-alpha-1 dark:hover:bg-n-alpha-3 group\"\n :class=\"{\n 'active animate-card-select bg-n-alpha-1 dark:bg-n-alpha-3 border-n-weak':\n isActiveChat,\n 'bg-n-slate-2 dark:bg-n-slate-3': selected,\n 'px-0': compact,\n 'px-3': !compact,\n }\"\n @click=\"onCardClick\"\n @contextmenu=\"openContextMenu($event)\"\n >\n <div\n class=\"relative\"\n @mouseenter=\"onThumbnailHover\"\n @mouseleave=\"onThumbnailLeave\"\n >\n <Avatar\n v-if=\"!hideThumbnail\"\n :name=\"currentContact.name\"\n :src=\"currentContact.thumbnail\"\n :size=\"32\"\n :status=\"currentContact.availability_status\"\n :class=\"!showInboxName ? 'mt-4' : 'mt-8'\"\n hide-offline-status\n rounded-full\n >\n <template #overlay=\"{ size }\">\n <label\n v-if=\"hovered || selected\"\n class=\"flex items-center justify-center rounded-full cursor-pointer absolute inset-0 z-10 backdrop-blur-[2px]\"\n :style=\"{ width: `${size}px`, height: `${size}px` }\"\n @click.stop\n >\n <input\n :value=\"selected\"\n :checked=\"selected\"\n class=\"!m-0 cursor-pointer\"\n type=\"checkbox\"\n @change=\"onSelectConversation($event.target.checked)\"\n />\n </label>\n </template>\n </Avatar>\n </div>\n <div\n class=\"px-0 py-3 border-b group-hover:border-transparent flex-1 border-n-slate-3 min-w-0\"\n >\n <div\n v-if=\"showMetaSection\"\n class=\"flex items-center min-w-0 gap-1\"\n :class=\"{\n 'ltr:ml-2 rtl:mr-2': !compact,\n 'mx-2': compact,\n }\"\n >\n <InboxName v-if=\"showInboxName\" :inbox=\"inbox\" class=\"flex-1 min-w-0\" />\n <div\n class=\"flex items-center gap-2 flex-shrink-0\"\n :class=\"{\n 'flex-1 justify-between': !showInboxName,\n }\"\n >\n <span\n v-if=\"showAssignee && assignee.name\"\n class=\"text-n-slate-11 text-xs font-medium leading-3 py-0.5 px-0 inline-flex items-center truncate\"\n >\n <fluent-icon icon=\"person\" size=\"12\" class=\"text-n-slate-11\" />\n {{ assignee.name }}\n </span>\n <PriorityMark :priority=\"chat.priority\" class=\"flex-shrink-0\" />\n </div>\n </div>\n <h4\n class=\"conversation--user text-sm my-0 mx-2 capitalize pt-0.5 text-ellipsis overflow-hidden whitespace-nowrap flex-1 min-w-0 ltr:pr-16 rtl:pl-16 text-n-slate-12\"\n :class=\"hasUnread ? 'font-semibold' : 'font-medium'\"\n >\n {{ currentContact.name }}\n </h4>\n <VoiceCallStatus\n v-if=\"voiceCallData.status\"\n key=\"voice-status-row\"\n :status=\"voiceCallData.status\"\n :direction=\"voiceCallData.direction\"\n :message-preview-class=\"messagePreviewClass\"\n />\n <MessagePreview\n v-else-if=\"lastMessageInChat\"\n key=\"message-preview\"\n :message=\"lastMessageInChat\"\n class=\"my-0 mx-2 leading-6 h-6 flex-1 min-w-0 text-sm\"\n :class=\"messagePreviewClass\"\n />\n <p\n v-else\n key=\"no-messages\"\n class=\"text-n-slate-11 text-sm my-0 mx-2 leading-6 h-6 flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\"\n :class=\"messagePreviewClass\"\n >\n <fluent-icon\n size=\"16\"\n class=\"-mt-0.5 align-middle inline-block text-n-slate-10\"\n icon=\"info\"\n />\n <span class=\"mx-0.5\">\n {{ $t(`CHAT_LIST.NO_MESSAGES`) }}\n </span>\n </p>\n <div\n class=\"absolute flex flex-col ltr:right-3 rtl:left-3\"\n :class=\"showMetaSection ? 'top-8' : 'top-4'\"\n >\n <span class=\"ml-auto font-normal leading-4 text-xxs\">\n <TimeAgo\n :last-activity-timestamp=\"chat.timestamp\"\n :created-at-timestamp=\"chat.created_at\"\n />\n </span>\n <span\n class=\"shadow-lg rounded-full text-xxs font-semibold h-4 leading-4 ltr:ml-auto rtl:mr-auto mt-1 min-w-[1rem] px-1 py-0 text-center text-white bg-n-teal-9\"\n :class=\"hasUnread ? 'block' : 'hidden'\"\n >\n {{ unreadCount > 9 ? '9+' : unreadCount }}\n </span>\n </div>\n <CardLabels\n v-if=\"showLabelsSection\"\n :conversation-labels=\"chat.labels\"\n class=\"mt-0.5 mx-2 mb-0\"\n >\n <template v-if=\"hasSlaPolicyId\" #before>\n <SLACardLabel :chat=\"chat\" class=\"ltr:mr-1 rtl:ml-1\" />\n </template>\n </CardLabels>\n </div>\n <ContextMenu\n v-if=\"showContextMenu\"\n :x=\"contextMenu.x\"\n :y=\"contextMenu.y\"\n @close=\"closeContextMenu\"\n >\n <ConversationContextMenu\n :status=\"chat.status\"\n :inbox-id=\"inbox.id\"\n :priority=\"chat.priority\"\n :chat-id=\"chat.id\"\n :has-unread-messages=\"hasUnread\"\n :conversation-url=\"conversationPath\"\n :allowed-options=\"allowedContextMenuOptions\"\n @update-conversation=\"onUpdateConversation\"\n @assign-agent=\"onAssignAgent\"\n @assign-label=\"onAssignLabel\"\n @assign-team=\"onAssignTeam\"\n @mark-as-unread=\"markAsUnread\"\n @mark-as-read=\"markAsRead\"\n @assign-priority=\"assignPriority\"\n @delete-conversation=\"deleteConversation\"\n @close=\"closeContextMenu\"\n />\n </ContextMenu>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ConversationSidebar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/CrmInsightsSidebar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/EmailTranscriptModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/EmptyState/EmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/EmptyState/EmptyStateMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/EmptyState/FeaturePlaceholder.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n ⌘\n ' is used","line":35,"column":10,"nodeType":null,"endLine":37,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,815],"text":"<i18n>\n{\n \"en\": {\n \"\\n ⌘\\n \": \"\\n ⌘\\n \"\n }\n}\n</i18n>\n\n<script>\nimport Hotkey from 'dashboard/components/base/Hotkey.vue';\n\nexport default {\n components: {\n Hotkey,\n },\n data() {\n return {\n keyShortcuts: [\n {\n key: 'K',\n description: this.$t('CONVERSATION.EMPTY_STATE.CMD_BAR'),\n },\n {\n key: '/',\n description: this.$t('CONVERSATION.EMPTY_STATE.KEYBOARD_SHORTCUTS'),\n },\n ],\n };\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col gap-2 mt-9\">\n <div\n v-for=\"keyShortcut in keyShortcuts\"\n :key=\"keyShortcut.key\"\n class=\"flex items-center gap-2\"\n >\n <div class=\"flex items-center gap-2\">\n <Hotkey\n custom-class=\"w-8 h-6 text-lg font-medium text-n-slate-12 outline outline-n-container outline-1 bg-n-alpha-3\"\n >{{$t(`\n ⌘\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport Hotkey from 'dashboard/components/base/Hotkey.vue';\n\nexport default {\n components: {\n Hotkey,\n },\n data() {\n return {\n keyShortcuts: [\n {\n key: 'K',\n description: this.$t('CONVERSATION.EMPTY_STATE.CMD_BAR'),\n },\n {\n key: '/',\n description: this.$t('CONVERSATION.EMPTY_STATE.KEYBOARD_SHORTCUTS'),\n },\n ],\n };\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col gap-2 mt-9\">\n <div\n v-for=\"keyShortcut in keyShortcuts\"\n :key=\"keyShortcut.key\"\n class=\"flex items-center gap-2\"\n >\n <div class=\"flex items-center gap-2\">\n <Hotkey\n custom-class=\"w-8 h-6 text-lg font-medium text-n-slate-12 outline outline-n-container outline-1 bg-n-alpha-3\"\n >\n ⌘\n </Hotkey>\n <Hotkey\n custom-class=\"w-8 h-6 text-xs font-medium text-n-slate-12 outline outline-n-container outline-1 bg-n-alpha-3\"\n >\n {{ keyShortcut.key }}\n </Hotkey>\n </div>\n <span class=\"text-sm font-medium text-center text-n-slate-12\">\n {{ keyShortcut.description }}\n </span>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/FilterItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${pathPrefix}.${value}.TEXT`' dynamic key is used'","line":47,"column":10,"nodeType":"CallExpression","endLine":47,"endColumn":43}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nexport default {\n props: {\n selectedValue: {\n type: String,\n required: true,\n },\n items: {\n type: Array,\n required: true,\n },\n type: {\n type: String,\n required: true,\n },\n pathPrefix: {\n type: String,\n required: true,\n },\n },\n emits: ['onChangeFilter'],\n data() {\n return {\n activeValue: this.selectedValue,\n };\n },\n methods: {\n onTabChange() {\n if (this.type === 'status') {\n this.$store.dispatch('setChatStatusFilter', this.activeValue);\n } else {\n this.$store.dispatch('setChatSortFilter', this.activeValue);\n }\n this.$emit('onChangeFilter', this.activeValue, this.type);\n },\n },\n};\n</script>\n\n<template>\n <select\n v-model=\"activeValue\"\n class=\"w-32 h-6 py-0 pl-2 pr-6 mx-1 my-0 text-xs border border-solid bg-n-slate-3 dark:bg-n-solid-3 border-n-weak dark:border-n-weak text-n-slate-12\"\n @change=\"onTabChange()\"\n >\n <option v-for=\"value in items\" :key=\"value\" :value=\"value\">\n {{ $t(`${pathPrefix}.${value}.TEXT`) }}\n </option>\n </select>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/MessagePreview.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${attachmentMessageContent}`' dynamic key is used'","line":103,"column":10,"nodeType":"CallExpression","endLine":103,"endColumn":43}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { MESSAGE_TYPE } from 'widget/helpers/constants';\nimport { useMessageFormatter } from 'shared/composables/useMessageFormatter';\nimport { ATTACHMENT_ICONS } from 'shared/constants/messages';\n\nexport default {\n name: 'MessagePreview',\n props: {\n message: {\n type: Object,\n required: true,\n },\n showMessageType: {\n type: Boolean,\n default: true,\n },\n defaultEmptyMessage: {\n type: String,\n default: '',\n },\n },\n setup() {\n const { getPlainText } = useMessageFormatter();\n return {\n getPlainText,\n };\n },\n computed: {\n messageByAgent() {\n const { message_type: messageType } = this.message;\n return messageType === MESSAGE_TYPE.OUTGOING;\n },\n isMessageAnActivity() {\n const { message_type: messageType } = this.message;\n return messageType === MESSAGE_TYPE.ACTIVITY;\n },\n isMessagePrivate() {\n const { private: isPrivate } = this.message;\n return isPrivate;\n },\n parsedLastMessage() {\n const { content_attributes: contentAttributes } = this.message;\n const { email: { subject } = {} } = contentAttributes || {};\n return this.getPlainText(subject || this.message.content);\n },\n lastMessageFileType() {\n const [{ file_type: fileType } = {}] = this.message.attachments;\n return fileType;\n },\n attachmentIcon() {\n return ATTACHMENT_ICONS[this.lastMessageFileType];\n },\n attachmentMessageContent() {\n return `CHAT_LIST.ATTACHMENTS.${this.lastMessageFileType}.CONTENT`;\n },\n isMessageSticker() {\n return this.message && this.message.content_type === 'sticker';\n },\n },\n};\n</script>\n\n<template>\n <div class=\"overflow-hidden text-ellipsis whitespace-nowrap\">\n <template v-if=\"showMessageType\">\n <fluent-icon\n v-if=\"isMessagePrivate\"\n size=\"16\"\n class=\"-mt-0.5 align-middle text-n-slate-11 inline-block\"\n icon=\"lock-closed\"\n />\n <fluent-icon\n v-else-if=\"messageByAgent\"\n size=\"16\"\n class=\"-mt-0.5 align-middle text-n-slate-11 inline-block\"\n icon=\"arrow-reply\"\n />\n <fluent-icon\n v-else-if=\"isMessageAnActivity\"\n size=\"16\"\n class=\"-mt-0.5 align-middle text-n-slate-11 inline-block\"\n icon=\"info\"\n />\n </template>\n <span v-if=\"message.content && isMessageSticker\">\n <fluent-icon\n size=\"16\"\n class=\"-mt-0.5 align-middle inline-block text-n-slate-11\"\n icon=\"image\"\n />\n {{ $t('CHAT_LIST.ATTACHMENTS.image.CONTENT') }}\n </span>\n <span v-else-if=\"message.content\">\n {{ parsedLastMessage }}\n </span>\n <span v-else-if=\"message.attachments\">\n <fluent-icon\n v-if=\"attachmentIcon && showMessageType\"\n size=\"16\"\n class=\"-mt-0.5 align-middle inline-block text-n-slate-11\"\n :icon=\"attachmentIcon\"\n />\n {{ $t(`${attachmentMessageContent}`) }}\n </span>\n <span v-else>\n {{ defaultEmptyMessage || $t('CHAT_LIST.NO_CONTENT') }}\n </span>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/MessageSignatureMissingAlert.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'i18nKey' dynamic key is used'","line":133,"column":16,"nodeType":"CallExpression","endLine":133,"endColumn":40},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'label' dynamic key is used'","line":242,"column":26,"nodeType":"CallExpression","endLine":242,"endColumn":40}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { ref, provide } from 'vue';\n// composable\nimport { useConfig } from 'dashboard/composables/useConfig';\nimport { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents';\nimport { useAI } from 'dashboard/composables/useAI';\nimport { useSnakeCase } from 'dashboard/composables/useTransformKeys';\n\n// components\nimport ReplyBox from './ReplyBox.vue';\nimport MessageList from 'next/message/MessageList.vue';\nimport ConversationLabelSuggestion from './conversation/LabelSuggestion.vue';\nimport Banner from 'dashboard/components/ui/Banner.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\n// stores and apis\nimport { mapGetters } from 'vuex';\n\n// mixins\nimport inboxMixin, { INBOX_FEATURES } from 'shared/mixins/inboxMixin';\n\n// utils\nimport { emitter } from 'shared/helpers/mitt';\nimport { getTypingUsersText } from '../../../helper/commons';\nimport { calculateScrollTop } from './helpers/scrollTopCalculationHelper';\nimport { LocalStorage } from 'shared/helpers/localStorage';\nimport {\n filterDuplicateSourceMessages,\n getReadMessages,\n getUnreadMessages,\n} from 'dashboard/helper/conversationHelper';\n\n// constants\nimport { BUS_EVENTS } from 'shared/constants/busEvents';\nimport { REPLY_POLICY } from 'shared/constants/links';\nimport wootConstants from 'dashboard/constants/globals';\nimport { LOCAL_STORAGE_KEYS } from 'dashboard/constants/localStorage';\nimport { INBOX_TYPES } from 'dashboard/helper/inbox';\n\nexport default {\n components: {\n MessageList,\n ReplyBox,\n Banner,\n ConversationLabelSuggestion,\n Spinner,\n },\n mixins: [inboxMixin],\n setup() {\n const isPopOutReplyBox = ref(false);\n const conversationPanelRef = ref(null);\n const { isEnterprise } = useConfig();\n\n const keyboardEvents = {\n Escape: {\n action: () => {\n isPopOutReplyBox.value = false;\n },\n },\n };\n\n useKeyboardEvents(keyboardEvents);\n\n const {\n isAIIntegrationEnabled,\n isLabelSuggestionFeatureEnabled,\n fetchIntegrationsIfRequired,\n fetchLabelSuggestions,\n } = useAI();\n\n provide('contextMenuElementTarget', conversationPanelRef);\n\n return {\n isEnterprise,\n isPopOutReplyBox,\n isAIIntegrationEnabled,\n isLabelSuggestionFeatureEnabled,\n fetchIntegrationsIfRequired,\n fetchLabelSuggestions,\n conversationPanelRef,\n };\n },\n data() {\n return {\n isLoadingPrevious: true,\n heightBeforeLoad: null,\n conversationPanel: null,\n hasUserScrolled: false,\n isProgrammaticScroll: false,\n messageSentSinceOpened: false,\n labelSuggestions: [],\n };\n },\n\n computed: {\n ...mapGetters({\n currentChat: 'getSelectedChat',\n currentUserId: 'getCurrentUserID',\n listLoadingStatus: 'getAllMessagesLoaded',\n currentAccountId: 'getCurrentAccountId',\n }),\n isOpen() {\n return this.currentChat?.status === wootConstants.STATUS_TYPE.OPEN;\n },\n shouldShowLabelSuggestions() {\n return (\n this.isOpen &&\n this.isEnterprise &&\n this.isAIIntegrationEnabled &&\n !this.messageSentSinceOpened\n );\n },\n inboxId() {\n return this.currentChat.inbox_id;\n },\n inbox() {\n return this.$store.getters['inboxes/getInbox'](this.inboxId);\n },\n typingUsersList() {\n const userList = this.$store.getters[\n 'conversationTypingStatus/getUserList'\n ](this.currentChat.id);\n return userList;\n },\n isAnyoneTyping() {\n const userList = this.typingUsersList;\n return userList.length !== 0;\n },\n typingUserNames() {\n const userList = this.typingUsersList;\n if (this.isAnyoneTyping) {\n const [i18nKey, params] = getTypingUsersText(userList);\n return this.$t(i18nKey, params);\n }\n\n return '';\n },\n getMessages() {\n const messages = this.currentChat.messages || [];\n if (this.isAWhatsAppChannel) {\n return filterDuplicateSourceMessages(messages);\n }\n return messages;\n },\n readMessages() {\n return getReadMessages(\n this.getMessages,\n this.currentChat.agent_last_seen_at\n );\n },\n unReadMessages() {\n return getUnreadMessages(\n this.getMessages,\n this.currentChat.agent_last_seen_at\n );\n },\n shouldShowSpinner() {\n return (\n (this.currentChat && this.currentChat.dataFetched === undefined) ||\n (!this.listLoadingStatus && this.isLoadingPrevious)\n );\n },\n // Check there is a instagram inbox exists with the same instagram_id\n hasDuplicateInstagramInbox() {\n const instagramId = this.inbox.instagram_id;\n const { additional_attributes: additionalAttributes = {} } = this.inbox;\n const instagramInbox =\n this.$store.getters['inboxes/getInstagramInboxByInstagramId'](\n instagramId\n );\n\n return (\n this.inbox.channel_type === INBOX_TYPES.FB &&\n additionalAttributes.type === 'instagram_direct_message' &&\n instagramInbox\n );\n },\n\n replyWindowBannerMessage() {\n if (this.isAWhatsAppChannel) {\n return this.$t('CONVERSATION.TWILIO_WHATSAPP_CAN_REPLY');\n }\n if (this.isAPIInbox) {\n const { additional_attributes: additionalAttributes = {} } = this.inbox;\n if (additionalAttributes) {\n const {\n agent_reply_time_window_message: agentReplyTimeWindowMessage,\n agent_reply_time_window: agentReplyTimeWindow,\n } = additionalAttributes;\n return (\n agentReplyTimeWindowMessage ||\n this.$t('CONVERSATION.API_HOURS_WINDOW', {\n hours: agentReplyTimeWindow,\n })\n );\n }\n return '';\n }\n return this.$t('CONVERSATION.CANNOT_REPLY');\n },\n replyWindowLink() {\n if (this.isAFacebookInbox || this.isAnInstagramChannel) {\n return REPLY_POLICY.FACEBOOK;\n }\n if (this.isAWhatsAppCloudChannel) {\n return REPLY_POLICY.WHATSAPP_CLOUD;\n }\n if (this.isATiktokChannel) {\n return REPLY_POLICY.TIKTOK;\n }\n if (!this.isAPIInbox) {\n return REPLY_POLICY.TWILIO_WHATSAPP;\n }\n return '';\n },\n replyWindowLinkText() {\n if (\n this.isAWhatsAppChannel ||\n this.isAFacebookInbox ||\n this.isAnInstagramChannel\n ) {\n return this.$t('CONVERSATION.24_HOURS_WINDOW');\n }\n if (this.isATiktokChannel) {\n return this.$t('CONVERSATION.48_HOURS_WINDOW');\n }\n if (!this.isAPIInbox) {\n return this.$t('CONVERSATION.TWILIO_WHATSAPP_24_HOURS_WINDOW');\n }\n return '';\n },\n unreadMessageCount() {\n return this.currentChat.unread_count || 0;\n },\n unreadMessageLabel() {\n const count =\n this.unreadMessageCount > 9 ? '9+' : this.unreadMessageCount;\n const label =\n this.unreadMessageCount > 1\n ? 'CONVERSATION.UNREAD_MESSAGES'\n : 'CONVERSATION.UNREAD_MESSAGE';\n return `${count} ${this.$t(label)}`;\n },\n inboxSupportsReplyTo() {\n const incoming = this.inboxHasFeature(INBOX_FEATURES.REPLY_TO);\n const outgoing =\n this.inboxHasFeature(INBOX_FEATURES.REPLY_TO_OUTGOING) &&\n !this.is360DialogWhatsAppChannel;\n\n return { incoming, outgoing };\n },\n },\n\n watch: {\n currentChat(newChat, oldChat) {\n if (newChat.id === oldChat.id) {\n return;\n }\n this.fetchAllAttachmentsFromCurrentChat();\n this.fetchSuggestions();\n this.messageSentSinceOpened = false;\n },\n },\n\n created() {\n emitter.on(BUS_EVENTS.SCROLL_TO_MESSAGE, this.onScrollToMessage);\n // when a message is sent we set the flag to true this hides the label suggestions,\n // until the chat is changed and the flag is reset in the watch for currentChat\n emitter.on(BUS_EVENTS.MESSAGE_SENT, () => {\n this.messageSentSinceOpened = true;\n });\n },\n\n mounted() {\n this.addScrollListener();\n this.fetchAllAttachmentsFromCurrentChat();\n this.fetchSuggestions();\n },\n\n unmounted() {\n this.removeBusListeners();\n this.removeScrollListener();\n },\n\n methods: {\n async fetchSuggestions() {\n // start empty, this ensures that the label suggestions are not shown\n this.labelSuggestions = [];\n\n if (this.isLabelSuggestionDismissed()) {\n return;\n }\n\n if (!this.isEnterprise) {\n return;\n }\n\n // Early exit if conversation already has labels - no need to suggest more\n const existingLabels = this.currentChat?.labels || [];\n if (existingLabels.length > 0) return;\n\n // method available in mixin, need to ensure that integrations are present\n await this.fetchIntegrationsIfRequired();\n\n if (!this.isLabelSuggestionFeatureEnabled) {\n return;\n }\n\n this.labelSuggestions = await this.fetchLabelSuggestions({\n conversationId: this.currentChat.id,\n });\n\n // once the labels are fetched, we need to scroll to bottom\n // but we need to wait for the DOM to be updated\n // so we use the nextTick method\n this.$nextTick(() => {\n // this param is added to route, telling the UI to navigate to the message\n // it is triggered by the SCROLL_TO_MESSAGE method\n // see setActiveChat on ConversationView.vue for more info\n const { messageId } = this.$route.query;\n\n // only trigger the scroll to bottom if the user has not scrolled\n // and there's no active messageId that is selected in view\n if (!messageId && !this.hasUserScrolled) {\n this.scrollToBottom();\n }\n });\n },\n isLabelSuggestionDismissed() {\n return LocalStorage.getFlag(\n LOCAL_STORAGE_KEYS.DISMISSED_LABEL_SUGGESTIONS,\n this.currentAccountId,\n this.currentChat.id\n );\n },\n fetchAllAttachmentsFromCurrentChat() {\n this.$store.dispatch('fetchAllAttachments', this.currentChat.id);\n },\n removeBusListeners() {\n emitter.off(BUS_EVENTS.SCROLL_TO_MESSAGE, this.onScrollToMessage);\n },\n onScrollToMessage({ messageId = '' } = {}) {\n this.$nextTick(() => {\n const messageElement = document.getElementById('message' + messageId);\n if (messageElement) {\n this.isProgrammaticScroll = true;\n messageElement.scrollIntoView({ behavior: 'smooth' });\n this.fetchPreviousMessages();\n } else {\n this.scrollToBottom();\n }\n });\n this.makeMessagesRead();\n },\n addScrollListener() {\n this.conversationPanel = this.$el.querySelector('.conversation-panel');\n this.setScrollParams();\n this.conversationPanel.addEventListener('scroll', this.handleScroll);\n this.$nextTick(() => this.scrollToBottom());\n this.isLoadingPrevious = false;\n },\n removeScrollListener() {\n this.conversationPanel.removeEventListener('scroll', this.handleScroll);\n },\n scrollToBottom() {\n this.isProgrammaticScroll = true;\n let relevantMessages = [];\n\n // label suggestions are not part of the messages list\n // so we need to handle them separately\n let labelSuggestions =\n this.conversationPanel.querySelector('.label-suggestion');\n\n // if there are unread messages, scroll to the first unread message\n if (this.unreadMessageCount > 0) {\n // capturing only the unread messages\n relevantMessages =\n this.conversationPanel.querySelectorAll('.message--unread');\n } else if (labelSuggestions) {\n // when scrolling to the bottom, the label suggestions is below the last message\n // so we scroll there if there are no unread messages\n // Unread messages always take the highest priority\n relevantMessages = [labelSuggestions];\n } else {\n // if there are no unread messages or label suggestion, scroll to the last message\n // capturing last message from the messages list\n relevantMessages = Array.from(\n this.conversationPanel.querySelectorAll('.message--read')\n ).slice(-1);\n }\n\n this.conversationPanel.scrollTop = calculateScrollTop(\n this.conversationPanel.scrollHeight,\n this.$el.scrollHeight,\n relevantMessages\n );\n },\n setScrollParams() {\n this.heightBeforeLoad = this.conversationPanel.scrollHeight;\n this.scrollTopBeforeLoad = this.conversationPanel.scrollTop;\n },\n\n async fetchPreviousMessages(scrollTop = 0) {\n this.setScrollParams();\n const shouldLoadMoreMessages =\n this.currentChat.dataFetched === true &&\n !this.listLoadingStatus &&\n !this.isLoadingPrevious;\n\n if (\n scrollTop < 100 &&\n !this.isLoadingPrevious &&\n shouldLoadMoreMessages\n ) {\n this.isLoadingPrevious = true;\n try {\n await this.$store.dispatch('fetchPreviousMessages', {\n conversationId: this.currentChat.id,\n before: this.currentChat.messages[0].id,\n });\n const heightDifference =\n this.conversationPanel.scrollHeight - this.heightBeforeLoad;\n this.conversationPanel.scrollTop =\n this.scrollTopBeforeLoad + heightDifference;\n this.setScrollParams();\n } catch (error) {\n // Ignore Error\n } finally {\n this.isLoadingPrevious = false;\n }\n }\n },\n\n handleScroll(e) {\n if (this.isProgrammaticScroll) {\n // Reset the flag\n this.isProgrammaticScroll = false;\n this.hasUserScrolled = false;\n } else {\n this.hasUserScrolled = true;\n }\n emitter.emit(BUS_EVENTS.ON_MESSAGE_LIST_SCROLL);\n this.fetchPreviousMessages(e.target.scrollTop);\n },\n\n makeMessagesRead() {\n this.$store.dispatch('markMessagesRead', { id: this.currentChat.id });\n },\n async handleMessageRetry(message) {\n if (!message) return;\n const payload = useSnakeCase(message);\n await this.$store.dispatch('sendMessageWithData', payload);\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col justify-between flex-grow h-full min-w-0 m-0\">\n <Banner\n v-if=\"!currentChat.can_reply\"\n color-scheme=\"alert\"\n class=\"mx-2 mt-2 overflow-hidden rounded-lg\"\n :banner-message=\"replyWindowBannerMessage\"\n :href-link=\"replyWindowLink\"\n :href-link-text=\"replyWindowLinkText\"\n />\n <Banner\n v-else-if=\"hasDuplicateInstagramInbox\"\n color-scheme=\"alert\"\n class=\"mx-2 mt-2 overflow-hidden rounded-lg\"\n :banner-message=\"$t('CONVERSATION.OLD_INSTAGRAM_INBOX_REPLY_BANNER')\"\n />\n <MessageList\n ref=\"conversationPanelRef\"\n class=\"conversation-panel flex-shrink flex-grow basis-px flex flex-col overflow-y-auto relative h-full m-0 pb-4\"\n :current-user-id=\"currentUserId\"\n :first-unread-id=\"unReadMessages[0]?.id\"\n :is-an-email-channel=\"isAnEmailChannel\"\n :inbox-supports-reply-to=\"inboxSupportsReplyTo\"\n :messages=\"getMessages\"\n @retry=\"handleMessageRetry\"\n >\n <template #beforeAll>\n <transition name=\"slide-up\">\n <!-- eslint-disable-next-line vue/require-toggle-inside-transition -->\n <li\n class=\"min-h-[4rem] flex flex-shrink-0 flex-grow-0 items-center flex-auto justify-center max-w-full mt-0 mr-0 mb-1 ml-0 relative first:mt-auto last:mb-0\"\n >\n <Spinner v-if=\"shouldShowSpinner\" class=\"text-n-brand\" />\n </li>\n </transition>\n </template>\n <template #unreadBadge>\n <li\n v-show=\"unreadMessageCount != 0\"\n class=\"list-none flex justify-center items-center\"\n >\n <span\n class=\"shadow-lg rounded-full bg-n-brand text-white text-xs font-medium my-2.5 mx-auto px-2.5 py-1.5\"\n >\n {{ unreadMessageLabel }}\n </span>\n </li>\n </template>\n <template #after>\n <ConversationLabelSuggestion\n v-if=\"shouldShowLabelSuggestions\"\n :suggested-labels=\"labelSuggestions\"\n :chat-labels=\"currentChat.labels\"\n :conversation-id=\"currentChat.id\"\n />\n </template>\n </MessageList>\n <div\n class=\"flex relative flex-col\"\n :class=\"{\n 'modal-mask': isPopOutReplyBox,\n 'bg-n-background': !isPopOutReplyBox,\n }\"\n >\n <div\n v-if=\"isAnyoneTyping\"\n class=\"absolute flex items-center w-full h-0 -top-7\"\n >\n <div\n class=\"flex py-2 pr-4 pl-5 shadow-md rounded-full bg-white dark:bg-n-solid-3 text-n-slate-11 text-xs font-semibold my-2.5 mx-auto\"\n >\n {{ typingUserNames }}\n <img\n class=\"w-6 ltr:ml-2 rtl:mr-2\"\n src=\"assets/images/typing.gif\"\n alt=\"Someone is typing\"\n />\n </div>\n </div>\n <ReplyBox\n :pop-out-reply-box=\"isPopOutReplyBox\"\n @update:pop-out-reply-box=\"isPopOutReplyBox = $event\"\n />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.modal-mask {\n @apply fixed;\n\n &::v-deep {\n .ProseMirror-woot-style {\n @apply max-h-[25rem];\n }\n\n .reply-box {\n @apply border border-n-weak max-w-[75rem] w-[70%];\n\n &.is-private {\n @apply dark:border-n-amber-3/30 border-n-amber-12/5;\n }\n }\n\n .reply-box .reply-box__top {\n @apply relative min-h-[27.5rem];\n }\n\n .reply-box__top .input {\n @apply min-h-[27.5rem];\n }\n\n .emoji-dialog {\n @apply absolute ltr:left-auto rtl:right-auto bottom-1;\n }\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/MoreActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/OnboardingFeatureCard.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '→' is used","line":52,"column":31,"nodeType":null,"endLine":52,"endColumn":34,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1066],"text":"<i18n>\n{\n \"en\": {\n \"→\": \"→\"\n }\n}\n</i18n>\n\n<script setup>\ndefineProps({\n imageSrc: {\n type: String,\n default: '',\n },\n imageAlt: {\n type: String,\n default: '',\n },\n title: {\n type: String,\n default: '',\n },\n description: {\n type: String,\n default: '',\n },\n to: {\n type: String,\n default: '',\n },\n linkText: {\n type: String,\n default: '',\n },\n});\n</script>\n\n<template>\n <div\n class=\"h-full w-full bg-n-background border border-n-weak rounded-lg p-4 flex flex-col\"\n >\n <div class=\"flex-1 flex items-center justify-center\">\n <img :src=\"imageSrc\" :alt=\"imageAlt\" class=\"h-36 w-auto mx-auto\" />\n </div>\n <div class=\"mt-auto\">\n <p\n class=\"text-base text-n-slate-12 font-interDisplay font-semibold tracking-[0.3px]\"\n >\n {{ title }}\n </p>\n <p class=\"text-n-slate-11 text-sm\">\n {{ description }}\n </p>\n <router-link\n v-if=\"to\"\n :to=\"{ name: to }\"\n class=\"no-underline text-n-brand text-sm font-medium\"\n >\n <span>{{ linkText }}</span>\n <span class=\"ml-2\">{{ $t(`→`)"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\ndefineProps({\n imageSrc: {\n type: String,\n default: '',\n },\n imageAlt: {\n type: String,\n default: '',\n },\n title: {\n type: String,\n default: '',\n },\n description: {\n type: String,\n default: '',\n },\n to: {\n type: String,\n default: '',\n },\n linkText: {\n type: String,\n default: '',\n },\n});\n</script>\n\n<template>\n <div\n class=\"h-full w-full bg-n-background border border-n-weak rounded-lg p-4 flex flex-col\"\n >\n <div class=\"flex-1 flex items-center justify-center\">\n <img :src=\"imageSrc\" :alt=\"imageAlt\" class=\"h-36 w-auto mx-auto\" />\n </div>\n <div class=\"mt-auto\">\n <p\n class=\"text-base text-n-slate-12 font-interDisplay font-semibold tracking-[0.3px]\"\n >\n {{ title }}\n </p>\n <p class=\"text-n-slate-11 text-sm\">\n {{ description }}\n </p>\n <router-link\n v-if=\"to\"\n :to=\"{ name: to }\"\n class=\"no-underline text-n-brand text-sm font-medium\"\n >\n <span>{{ linkText }}</span>\n <span class=\"ml-2\">{{ `→` }}</span>\n </router-link>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/OnboardingView.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'translationKey' dynamic key is used'","line":22,"column":10,"nodeType":"CallExpression","endLine":25,"endColumn":5}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport OnboardingFeatureCard from './OnboardingFeatureCard.vue';\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nconst getters = useStoreGetters();\nconst { t } = useI18n();\nconst globalConfig = computed(() => getters['globalConfig/get'].value);\nconst currentUser = computed(() => getters.getCurrentUser.value);\n\nconst greetingMessage = computed(() => {\n const hours = new Date().getHours();\n let translationKey;\n if (hours < 12) {\n translationKey = 'ONBOARDING.GREETING_MORNING';\n } else if (hours < 18) {\n translationKey = 'ONBOARDING.GREETING_AFTERNOON';\n } else {\n translationKey = 'ONBOARDING.GREETING_EVENING';\n }\n return t(translationKey, {\n name: currentUser.value.name,\n installationName: globalConfig.value.installationName,\n });\n});\n</script>\n\n<template>\n <div\n class=\"min-h-screen lg:max-w-5xl max-w-4xl mx-auto grid grid-cols-2 grid-rows-[auto_1fr_1fr] auto-rows-min gap-4 p-8 w-full font-inter overflow-auto\"\n >\n <div class=\"col-span-full self-start\">\n <p\n class=\"text-xl font-semibold text-n-slate-12 font-interDisplay tracking-[0.3px]\"\n >\n {{ greetingMessage }}\n </p>\n <p class=\"text-n-slate-11 max-w-2xl text-base\">\n {{\n $t('ONBOARDING.DESCRIPTION', {\n installationName: globalConfig.installationName,\n })\n }}\n </p>\n </div>\n <OnboardingFeatureCard\n image-src=\"/dashboard/images/onboarding/omnichannel-inbox.png\"\n image-alt=\"Omnichannel\"\n to=\"settings_inbox_new\"\n :title=\"$t('ONBOARDING.ALL_CONVERSATION.TITLE')\"\n :description=\"$t('ONBOARDING.ALL_CONVERSATION.DESCRIPTION')\"\n :link-text=\"$t('ONBOARDING.ALL_CONVERSATION.NEW_LINK')\"\n />\n <OnboardingFeatureCard\n image-src=\"/dashboard/images/onboarding/teams.png\"\n image-alt=\"Teams\"\n to=\"settings_teams_new\"\n :title=\"$t('ONBOARDING.TEAM_MEMBERS.TITLE')\"\n :description=\"$t('ONBOARDING.TEAM_MEMBERS.DESCRIPTION')\"\n :link-text=\"$t('ONBOARDING.TEAM_MEMBERS.NEW_LINK')\"\n />\n <OnboardingFeatureCard\n image-src=\"/dashboard/images/onboarding/canned-responses.png\"\n image-alt=\"Canned responses\"\n to=\"canned_list\"\n :title=\"$t('ONBOARDING.CANNED_RESPONSES.TITLE')\"\n :description=\"$t('ONBOARDING.CANNED_RESPONSES.DESCRIPTION')\"\n :link-text=\"$t('ONBOARDING.CANNED_RESPONSES.NEW_LINK')\"\n />\n <OnboardingFeatureCard\n image-src=\"/dashboard/images/onboarding/labels.png\"\n image-alt=\"Labels\"\n to=\"labels_list\"\n :title=\"$t('ONBOARDING.LABELS.TITLE')\"\n :description=\"$t('ONBOARDING.LABELS.DESCRIPTION')\"\n :link-text=\"$t('ONBOARDING.LABELS.NEW_LINK')\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/PriorityMark.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONVERSATION.PRIORITY.OPTIONS.${this.priority.toUpperCase()}`' dynamic key is used'","line":21,"column":14,"nodeType":"CallExpression","endLine":23,"endColumn":8}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { CONVERSATION_PRIORITY } from '../../../../shared/constants/messages';\n\nexport default {\n name: 'PriorityMark',\n props: {\n priority: {\n type: String,\n default: '',\n validate: value =>\n [...Object.values(CONVERSATION_PRIORITY), ''].includes(value),\n },\n },\n data() {\n return {\n CONVERSATION_PRIORITY,\n };\n },\n computed: {\n tooltipText() {\n return this.$t(\n `CONVERSATION.PRIORITY.OPTIONS.${this.priority.toUpperCase()}`\n );\n },\n isUrgent() {\n return this.priority === CONVERSATION_PRIORITY.URGENT;\n },\n },\n};\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <span\n v-if=\"priority\"\n v-tooltip=\"{\n content: tooltipText,\n delay: { show: 1500, hide: 0 },\n hideOnClick: true,\n }\"\n class=\"shrink-0 rounded-sm inline-flex items-center justify-center w-3.5 h-3.5\"\n :class=\"{\n 'bg-n-ruby-4 text-n-ruby-10': isUrgent,\n 'bg-n-slate-4 text-n-slate-11': !isUrgent,\n }\"\n >\n <fluent-icon\n :icon=\"`priority-${priority.toLowerCase()}`\"\n :size=\"isUrgent ? 12 : 14\"\n class=\"flex-shrink-0\"\n view-box=\"0 0 14 14\"\n />\n </span>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/QuotedEmailPreview.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ReplyBoxBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ReplyEmailHead.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ReplyToMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ShopifyOrderItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getStatusI18nKey('FULFILLMENT',status)' dynamic key is used'","line":42,"column":10,"nodeType":"CallExpression","endLine":42,"endColumn":52},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getStatusI18nKey('FINANCIAL',status)' dynamic key is used'","line":50,"column":10,"nodeType":"CallExpression","endLine":50,"endColumn":50}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { format } from 'date-fns';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n order: {\n type: Object,\n required: true,\n },\n});\n\nconst { t } = useI18n();\n\nconst formatDate = dateString => {\n return format(new Date(dateString), 'MMM d, yyyy');\n};\n\nconst formatCurrency = (amount, currency) => {\n return new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency || 'USD',\n }).format(amount);\n};\n\nconst getStatusClass = status => {\n const classes = {\n paid: 'bg-n-teal-5 text-n-teal-12',\n };\n return classes[status] || 'bg-n-solid-3 text-n-slate-12';\n};\n\nconst getStatusI18nKey = (type, status = '') => {\n return `CONVERSATION_SIDEBAR.SHOPIFY.${type.toUpperCase()}_STATUS.${status.toUpperCase()}`;\n};\n\nconst fulfillmentStatus = computed(() => {\n const { fulfillment_status: status } = props.order;\n if (!status) {\n return '';\n }\n return t(getStatusI18nKey('FULFILLMENT', status));\n});\n\nconst financialStatus = computed(() => {\n const { financial_status: status } = props.order;\n if (!status) {\n return '';\n }\n return t(getStatusI18nKey('FINANCIAL', status));\n});\n\nconst getFulfillmentClass = status => {\n const classes = {\n fulfilled: 'text-n-teal-9',\n partial: 'text-n-amber-9',\n unfulfilled: 'text-n-ruby-9',\n };\n return classes[status] || 'text-n-slate-11';\n};\n</script>\n\n<template>\n <div\n class=\"py-3 border-b border-n-weak last:border-b-0 flex flex-col gap-1.5\"\n >\n <div class=\"flex justify-between items-center\">\n <div class=\"font-medium flex\">\n <a\n :href=\"order.admin_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"hover:underline text-n-slate-12 cursor-pointer truncate\"\n >\n {{ $t('CONVERSATION_SIDEBAR.SHOPIFY.ORDER_ID', { id: order.id }) }}\n <i class=\"i-lucide-external-link pl-5\" />\n </a>\n </div>\n <div\n :class=\"getStatusClass(order.financial_status)\"\n class=\"text-xs px-2 py-1 rounded capitalize truncate\"\n :title=\"financialStatus\"\n >\n {{ financialStatus }}\n </div>\n </div>\n <div class=\"text-sm text-n-slate-12\">\n <span class=\"text-n-slate-11 border-r border-n-weak pr-2\">\n {{ formatDate(order.created_at) }}\n </span>\n <span class=\"text-n-slate-11 pl-2\">\n {{ formatCurrency(order.total_price, order.currency) }}\n </span>\n </div>\n <div v-if=\"fulfillmentStatus\">\n <span\n :class=\"getFulfillmentClass(order.fulfillment_status)\"\n class=\"capitalize font-medium\"\n :title=\"fulfillmentStatus\"\n >\n {{ fulfillmentStatus }}\n </span>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/ShopifyOrdersList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/TagAgents.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/TagTools.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/VariableList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/VoiceCallStatus.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'labelKey' dynamic key is used'","line":74,"column":10,"nodeType":"CallExpression","endLine":74,"endColumn":22}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport {\n VOICE_CALL_STATUS,\n VOICE_CALL_DIRECTION,\n} from 'dashboard/components-next/message/constants';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\n\nconst props = defineProps({\n status: { type: String, default: '' },\n direction: { type: String, default: '' },\n messagePreviewClass: { type: [String, Array, Object], default: '' },\n});\n\nconst LABEL_KEYS = {\n [VOICE_CALL_STATUS.IN_PROGRESS]: 'CONVERSATION.VOICE_CALL.CALL_IN_PROGRESS',\n [VOICE_CALL_STATUS.COMPLETED]: 'CONVERSATION.VOICE_CALL.CALL_ENDED',\n};\n\nconst ICON_MAP = {\n [VOICE_CALL_STATUS.IN_PROGRESS]: 'i-ph-phone-call',\n [VOICE_CALL_STATUS.NO_ANSWER]: 'i-ph-phone-x',\n [VOICE_CALL_STATUS.FAILED]: 'i-ph-phone-x',\n};\n\nconst COLOR_MAP = {\n [VOICE_CALL_STATUS.IN_PROGRESS]: 'text-n-teal-9',\n [VOICE_CALL_STATUS.RINGING]: 'text-n-teal-9',\n [VOICE_CALL_STATUS.COMPLETED]: 'text-n-slate-11',\n [VOICE_CALL_STATUS.NO_ANSWER]: 'text-n-ruby-9',\n [VOICE_CALL_STATUS.FAILED]: 'text-n-ruby-9',\n};\n\nconst isOutbound = computed(\n () => props.direction === VOICE_CALL_DIRECTION.OUTBOUND\n);\nconst isFailed = computed(() =>\n [VOICE_CALL_STATUS.NO_ANSWER, VOICE_CALL_STATUS.FAILED].includes(props.status)\n);\n\nconst labelKey = computed(() => {\n if (LABEL_KEYS[props.status]) return LABEL_KEYS[props.status];\n if (props.status === VOICE_CALL_STATUS.RINGING) {\n return isOutbound.value\n ? 'CONVERSATION.VOICE_CALL.OUTGOING_CALL'\n : 'CONVERSATION.VOICE_CALL.INCOMING_CALL';\n }\n return isFailed.value\n ? 'CONVERSATION.VOICE_CALL.MISSED_CALL'\n : 'CONVERSATION.VOICE_CALL.INCOMING_CALL';\n});\n\nconst iconName = computed(() => {\n if (ICON_MAP[props.status]) return ICON_MAP[props.status];\n return isOutbound.value ? 'i-ph-phone-outgoing' : 'i-ph-phone-incoming';\n});\n\nconst statusColor = computed(\n () => COLOR_MAP[props.status] || 'text-n-slate-11'\n);\n</script>\n\n<template>\n <div\n class=\"my-0 mx-2 leading-6 h-6 flex-1 min-w-0 text-sm overflow-hidden text-ellipsis whitespace-nowrap\"\n :class=\"messagePreviewClass\"\n >\n <Icon\n class=\"inline-block -mt-0.5 align-middle size-4\"\n :icon=\"iconName\"\n :class=\"statusColor\"\n />\n <span class=\"mx-1\" :class=\"statusColor\">\n {{ $t(labelKey) }}\n </span>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/WhatsappTemplates/Modal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/WhatsappTemplates/TemplatesPicker.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":115,"column":69,"nodeType":null,"endLine":116,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3939],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed, toRef } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useFunctionGetter, useStore } from 'dashboard/composables/store';\nimport {\n COMPONENT_TYPES,\n MEDIA_FORMATS,\n findComponentByType,\n} from 'dashboard/helper/templateHelper';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n inboxId: {\n type: Number,\n default: undefined,\n },\n});\n\nconst emit = defineEmits(['onSelect']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst query = ref('');\nconst isRefreshing = ref(false);\n\nconst whatsAppTemplateMessages = useFunctionGetter(\n 'inboxes/getFilteredWhatsAppTemplates',\n toRef(props, 'inboxId')\n);\n\nconst filteredTemplateMessages = computed(() =>\n whatsAppTemplateMessages.value.filter(template =>\n template.name.toLowerCase().includes(query.value.toLowerCase())\n )\n);\n\nconst getTemplateBody = template => {\n return findComponentByType(template, COMPONENT_TYPES.BODY)?.text || '';\n};\n\nconst getTemplateHeader = template => {\n return findComponentByType(template, COMPONENT_TYPES.HEADER);\n};\n\nconst getTemplateFooter = template => {\n return findComponentByType(template, COMPONENT_TYPES.FOOTER);\n};\n\nconst getTemplateButtons = template => {\n return findComponentByType(template, COMPONENT_TYPES.BUTTONS);\n};\n\nconst hasMediaContent = template => {\n const header = getTemplateHeader(template);\n return header && MEDIA_FORMATS.includes(header.format);\n};\n\nconst refreshTemplates = async () => {\n isRefreshing.value = true;\n try {\n await store.dispatch('inboxes/syncTemplates', props.inboxId);\n useAlert(t('WHATSAPP_TEMPLATES.PICKER.REFRESH_SUCCESS'));\n } catch (error) {\n useAlert(t('WHATSAPP_TEMPLATES.PICKER.REFRESH_ERROR'));\n } finally {\n isRefreshing.value = false;\n }\n};\n</script>\n\n<template>\n <div class=\"w-full\">\n <div class=\"flex gap-2 mb-2.5\">\n <div\n class=\"flex flex-1 gap-1 items-center px-2.5 py-0 rounded-lg bg-n-alpha-black2 outline outline-1 outline-n-weak hover:outline-n-slate-6 dark:hover:outline-n-slate-6 focus-within:outline-n-brand dark:focus-within:outline-n-brand\"\n >\n <fluent-icon icon=\"search\" class=\"text-n-slate-12\" size=\"16\" />\n <input\n v-model=\"query\"\n type=\"search\"\n :placeholder=\"t('WHATSAPP_TEMPLATES.PICKER.SEARCH_PLACEHOLDER')\"\n class=\"reset-base w-full h-9 bg-transparent text-n-slate-12 !text-sm !outline-0\"\n />\n </div>\n <button\n :disabled=\"isRefreshing\"\n class=\"flex justify-center items-center w-9 h-9 rounded-lg bg-n-alpha-black2 outline outline-1 outline-n-weak hover:outline-n-slate-6 dark:hover:outline-n-slate-6 hover:bg-n-alpha-2 dark:hover:bg-n-solid-2 disabled:opacity-50 disabled:cursor-not-allowed\"\n :title=\"t('WHATSAPP_TEMPLATES.PICKER.REFRESH_BUTTON')\"\n @click=\"refreshTemplates\"\n >\n <Icon\n icon=\"i-lucide-refresh-ccw\"\n class=\"text-n-slate-12 size-4\"\n :class=\"{ 'animate-spin': isRefreshing }\"\n />\n </button>\n </div>\n <div\n class=\"bg-n-background outline-n-container outline outline-1 rounded-lg max-h-[18.75rem] overflow-y-auto p-2.5\"\n >\n <div v-for=\"(template, i) in filteredTemplateMessages\" :key=\"template.id\">\n <button\n class=\"block p-2.5 w-full text-left rounded-lg cursor-pointer hover:bg-n-alpha-2 dark:hover:bg-n-solid-2\"\n @click=\"emit('onSelect', template)\"\n >\n <div>\n <div class=\"flex justify-between items-center mb-2.5\">\n <p class=\"text-sm\">\n {{ template.name }}\n </p>\n <span\n class=\"inline-block px-2 py-1 text-xs leading-none rounded-lg cursor-default bg-n-slate-3 text-n-slate-12\"\n >\n {{ t('WHATSAPP_TEMPLATES.PICKER.LABELS.LANGUAGE') }}{{$t(`:\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, toRef } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useFunctionGetter, useStore } from 'dashboard/composables/store';\nimport {\n COMPONENT_TYPES,\n MEDIA_FORMATS,\n findComponentByType,\n} from 'dashboard/helper/templateHelper';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n inboxId: {\n type: Number,\n default: undefined,\n },\n});\n\nconst emit = defineEmits(['onSelect']);\n\nconst { t } = useI18n();\nconst store = useStore();\nconst query = ref('');\nconst isRefreshing = ref(false);\n\nconst whatsAppTemplateMessages = useFunctionGetter(\n 'inboxes/getFilteredWhatsAppTemplates',\n toRef(props, 'inboxId')\n);\n\nconst filteredTemplateMessages = computed(() =>\n whatsAppTemplateMessages.value.filter(template =>\n template.name.toLowerCase().includes(query.value.toLowerCase())\n )\n);\n\nconst getTemplateBody = template => {\n return findComponentByType(template, COMPONENT_TYPES.BODY)?.text || '';\n};\n\nconst getTemplateHeader = template => {\n return findComponentByType(template, COMPONENT_TYPES.HEADER);\n};\n\nconst getTemplateFooter = template => {\n return findComponentByType(template, COMPONENT_TYPES.FOOTER);\n};\n\nconst getTemplateButtons = template => {\n return findComponentByType(template, COMPONENT_TYPES.BUTTONS);\n};\n\nconst hasMediaContent = template => {\n const header = getTemplateHeader(template);\n return header && MEDIA_FORMATS.includes(header.format);\n};\n\nconst refreshTemplates = async () => {\n isRefreshing.value = true;\n try {\n await store.dispatch('inboxes/syncTemplates', props.inboxId);\n useAlert(t('WHATSAPP_TEMPLATES.PICKER.REFRESH_SUCCESS'));\n } catch (error) {\n useAlert(t('WHATSAPP_TEMPLATES.PICKER.REFRESH_ERROR'));\n } finally {\n isRefreshing.value = false;\n }\n};\n</script>\n\n<template>\n <div class=\"w-full\">\n <div class=\"flex gap-2 mb-2.5\">\n <div\n class=\"flex flex-1 gap-1 items-center px-2.5 py-0 rounded-lg bg-n-alpha-black2 outline outline-1 outline-n-weak hover:outline-n-slate-6 dark:hover:outline-n-slate-6 focus-within:outline-n-brand dark:focus-within:outline-n-brand\"\n >\n <fluent-icon icon=\"search\" class=\"text-n-slate-12\" size=\"16\" />\n <input\n v-model=\"query\"\n type=\"search\"\n :placeholder=\"t('WHATSAPP_TEMPLATES.PICKER.SEARCH_PLACEHOLDER')\"\n class=\"reset-base w-full h-9 bg-transparent text-n-slate-12 !text-sm !outline-0\"\n />\n </div>\n <button\n :disabled=\"isRefreshing\"\n class=\"flex justify-center items-center w-9 h-9 rounded-lg bg-n-alpha-black2 outline outline-1 outline-n-weak hover:outline-n-slate-6 dark:hover:outline-n-slate-6 hover:bg-n-alpha-2 dark:hover:bg-n-solid-2 disabled:opacity-50 disabled:cursor-not-allowed\"\n :title=\"t('WHATSAPP_TEMPLATES.PICKER.REFRESH_BUTTON')\"\n @click=\"refreshTemplates\"\n >\n <Icon\n icon=\"i-lucide-refresh-ccw\"\n class=\"text-n-slate-12 size-4\"\n :class=\"{ 'animate-spin': isRefreshing }\"\n />\n </button>\n </div>\n <div\n class=\"bg-n-background outline-n-container outline outline-1 rounded-lg max-h-[18.75rem] overflow-y-auto p-2.5\"\n >\n <div v-for=\"(template, i) in filteredTemplateMessages\" :key=\"template.id\">\n <button\n class=\"block p-2.5 w-full text-left rounded-lg cursor-pointer hover:bg-n-alpha-2 dark:hover:bg-n-solid-2\"\n @click=\"emit('onSelect', template)\"\n >\n <div>\n <div class=\"flex justify-between items-center mb-2.5\">\n <p class=\"text-sm\">\n {{ template.name }}\n </p>\n <span\n class=\"inline-block px-2 py-1 text-xs leading-none rounded-lg cursor-default bg-n-slate-3 text-n-slate-12\"\n >\n {{ t('WHATSAPP_TEMPLATES.PICKER.LABELS.LANGUAGE') }}:\n {{ template.language }}\n </span>\n </div>\n <!-- Header -->\n <div v-if=\"getTemplateHeader(template)\" class=\"mb-3\">\n <p class=\"text-xs font-medium text-n-slate-11\">\n {{ t('WHATSAPP_TEMPLATES.PICKER.HEADER') || 'HEADER' }}\n </p>\n <div\n v-if=\"getTemplateHeader(template).format === 'TEXT'\"\n class=\"text-sm label-body\"\n >\n {{ getTemplateHeader(template).text }}\n </div>\n <div\n v-else-if=\"hasMediaContent(template)\"\n class=\"text-sm italic text-n-slate-11\"\n >\n {{\n t('WHATSAPP_TEMPLATES.PICKER.MEDIA_CONTENT', {\n format: getTemplateHeader(template).format,\n }) ||\n `${getTemplateHeader(template).format} ${t('WHATSAPP_TEMPLATES.PICKER.MEDIA_CONTENT_FALLBACK')}`\n }}\n </div>\n </div>\n\n <!-- Body -->\n <div>\n <p class=\"text-xs font-medium text-n-slate-11\">\n {{ t('WHATSAPP_TEMPLATES.PICKER.BODY') || 'BODY' }}\n </p>\n <p class=\"text-sm label-body\">{{ getTemplateBody(template) }}</p>\n </div>\n\n <!-- Footer -->\n <div v-if=\"getTemplateFooter(template)\" class=\"mt-3\">\n <p class=\"text-xs font-medium text-n-slate-11\">\n {{ t('WHATSAPP_TEMPLATES.PICKER.FOOTER') || 'FOOTER' }}\n </p>\n <p class=\"text-sm label-body\">\n {{ getTemplateFooter(template).text }}\n </p>\n </div>\n\n <!-- Buttons -->\n <div v-if=\"getTemplateButtons(template)\" class=\"mt-3\">\n <p class=\"text-xs font-medium text-n-slate-11\">\n {{ t('WHATSAPP_TEMPLATES.PICKER.BUTTONS') || 'BUTTONS' }}\n </p>\n <div class=\"flex flex-wrap gap-1 mt-1\">\n <span\n v-for=\"button in getTemplateButtons(template).buttons\"\n :key=\"button.text\"\n class=\"px-2 py-1 text-xs rounded bg-n-slate-3 text-n-slate-12\"\n >\n {{ button.text }}\n </span>\n </div>\n </div>\n\n <div class=\"mt-3\">\n <p class=\"text-xs font-medium text-n-slate-11\">\n {{ t('WHATSAPP_TEMPLATES.PICKER.CATEGORY') || 'CATEGORY' }}\n </p>\n <p class=\"text-sm\">{{ template.category }}</p>\n </div>\n </div>\n </button>\n <hr\n v-if=\"i != filteredTemplateMessages.length - 1\"\n :key=\"`hr-${i}`\"\n class=\"border-b border-solid border-n-weak my-2.5 mx-auto max-w-[95%]\"\n />\n </div>\n <div v-if=\"!filteredTemplateMessages.length\" class=\"py-8 text-center\">\n <div v-if=\"query && whatsAppTemplateMessages.length\">\n <p>\n {{ t('WHATSAPP_TEMPLATES.PICKER.NO_TEMPLATES_FOUND') }}\n <strong>{{ query }}</strong>\n </p>\n </div>\n <div v-else-if=\"!whatsAppTemplateMessages.length\" class=\"space-y-4\">\n <p class=\"text-n-slate-11\">\n {{ t('WHATSAPP_TEMPLATES.PICKER.NO_TEMPLATES_AVAILABLE') }}\n </p>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.label-body {\n font-family: monospace;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/WhatsappTemplates/WhatsAppTemplateReply.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/advancedFilterItems.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/languages.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/components/GalleryView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/components/SLACardLabel.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONVERSATION.HEADER.SLA_STATUS.${upperCaseType}`' dynamic key is used'","line":45,"column":10,"nodeType":"CallExpression","endLine":47,"endColumn":5},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONVERSATION.HEADER.SLA_STATUS.${statusKey}`' dynamic key is used'","line":46,"column":13,"nodeType":"CallExpression","endLine":46,"endColumn":61}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { evaluateSLAStatus } from '@chatwoot/utils';\nimport SLAPopoverCard from './SLAPopoverCard.vue';\n\nconst props = defineProps({\n chat: {\n type: Object,\n default: () => ({}),\n },\n showExtendedInfo: {\n type: Boolean,\n default: false,\n },\n parentWidth: {\n type: Number,\n default: 1000,\n },\n});\n\nconst REFRESH_INTERVAL = 60000;\nconst { t } = useI18n();\n\nconst timer = ref(null);\nconst slaStatus = ref({\n threshold: null,\n isSlaMissed: false,\n type: null,\n icon: null,\n});\n\nconst appliedSLA = computed(() => props.chat?.applied_sla);\nconst slaEvents = computed(() => props.chat?.sla_events);\nconst hasSlaThreshold = computed(() => slaStatus.value?.threshold);\nconst isSlaMissed = computed(() => slaStatus.value?.isSlaMissed);\nconst slaTextStyles = computed(() =>\n isSlaMissed.value ? 'text-n-ruby-11' : 'text-n-amber-11'\n);\n\nconst slaStatusText = computed(() => {\n const upperCaseType = slaStatus.value?.type?.toUpperCase(); // FRT, NRT, or RT\n const statusKey = isSlaMissed.value ? 'MISSED' : 'DUE';\n\n return t(`CONVERSATION.HEADER.SLA_STATUS.${upperCaseType}`, {\n status: t(`CONVERSATION.HEADER.SLA_STATUS.${statusKey}`),\n });\n});\n\nconst showSlaPopoverCard = computed(\n () => props.showExtendedInfo && slaEvents.value?.length > 0\n);\n\nconst groupClass = computed(() => {\n return props.showExtendedInfo\n ? 'h-[26px] rounded-lg bg-n-alpha-1'\n : 'rounded h-5 border border-n-strong';\n});\n\nconst updateSlaStatus = () => {\n slaStatus.value = evaluateSLAStatus({\n appliedSla: appliedSLA.value,\n chat: props.chat,\n });\n};\n\nconst createTimer = () => {\n timer.value = setTimeout(() => {\n updateSlaStatus();\n createTimer();\n }, REFRESH_INTERVAL);\n};\n\nwatch(\n () => props.chat,\n () => {\n updateSlaStatus();\n }\n);\n\nconst slaPopoverClass = computed(() => {\n return props.showExtendedInfo\n ? 'ltr:pr-1.5 rtl:pl-1.5 ltr:border-r rtl:border-l border-n-strong'\n : '';\n});\n\nonMounted(() => {\n updateSlaStatus();\n createTimer();\n});\n\nonUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value);\n }\n});\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <div\n v-if=\"hasSlaThreshold\"\n class=\"relative flex items-center cursor-pointer min-w-fit group\"\n :class=\"groupClass\"\n >\n <div\n class=\"flex items-center w-full truncate px-1.5\"\n :class=\"showExtendedInfo ? '' : 'gap-1'\"\n >\n <div class=\"flex items-center gap-1\" :class=\"slaPopoverClass\">\n <fluent-icon\n size=\"12\"\n :icon=\"slaStatus.icon\"\n type=\"outline\"\n :icon-lib=\"isSlaMissed ? 'lucide' : 'fluent'\"\n class=\"flex-shrink-0\"\n :class=\"slaTextStyles\"\n />\n <span\n v-if=\"showExtendedInfo && parentWidth > 650\"\n class=\"text-xs font-medium\"\n :class=\"slaTextStyles\"\n >\n {{ slaStatusText }}\n </span>\n </div>\n <span\n class=\"text-xs font-medium\"\n :class=\"[slaTextStyles, showExtendedInfo && 'ltr:pl-1.5 rtl:pr-1.5']\"\n >\n {{ slaStatus.threshold }}\n </span>\n </div>\n <SLAPopoverCard\n v-if=\"showSlaPopoverCard\"\n :sla-missed-events=\"slaEvents\"\n class=\"start-0 xl:start-auto xl:end-0 top-7 hidden group-hover:flex\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/components/SLAEventItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/components/SLAPopoverCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/contextMenu/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/contextMenu/agentLoadingPlaceholder.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/contextMenu/menuItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/contextMenu/menuItemWithSubmenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversation/LabelSuggestion.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversationBulkActions/AgentSelector.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '?' is used","line":151,"column":19,"nodeType":null,"endLine":151,"endColumn":20,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4223],"text":"<i18n>\n{\n \"en\": {\n \"?\": \"?\"\n }\n}\n</i18n>\n\n<script>\nimport { mapGetters } from 'vuex';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport Spinner from 'shared/components/Spinner.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n Avatar,\n Spinner,\n NextButton,\n },\n props: {\n selectedInboxes: {\n type: Array,\n default: () => [],\n },\n conversationCount: {\n type: Number,\n default: 0,\n },\n },\n emits: ['select', 'close'],\n data() {\n return {\n query: '',\n selectedAgent: null,\n goBackToAgentList: false,\n };\n },\n computed: {\n ...mapGetters({\n uiFlags: 'bulkActions/getUIFlags',\n assignableAgentsUiFlags: 'inboxAssignableAgents/getUIFlags',\n }),\n filteredAgents() {\n if (this.query) {\n return this.assignableAgents.filter(agent =>\n agent.name.toLowerCase().includes(this.query.toLowerCase())\n );\n }\n return [\n {\n confirmed: true,\n name: 'None',\n id: null,\n role: 'agent',\n account_id: 0,\n email: 'None',\n },\n ...this.assignableAgents,\n ];\n },\n assignableAgents() {\n return this.$store.getters['inboxAssignableAgents/getAssignableAgents'](\n this.selectedInboxes.join(',')\n );\n },\n conversationLabel() {\n return this.conversationCount > 1 ? 'conversations' : 'conversation';\n },\n },\n mounted() {\n this.$store.dispatch('inboxAssignableAgents/fetch', this.selectedInboxes);\n },\n methods: {\n submit() {\n this.$emit('select', this.selectedAgent);\n },\n goBack() {\n this.goBackToAgentList = true;\n this.selectedAgent = null;\n },\n assignAgent(agent) {\n this.selectedAgent = agent;\n },\n onClose() {\n this.$emit('close');\n },\n onCloseAgentList() {\n if (this.selectedAgent === null && !this.goBackToAgentList) {\n this.onClose();\n }\n this.goBackToAgentList = false;\n },\n },\n};\n</script>\n\n<template>\n <div v-on-clickaway=\"onCloseAgentList\" class=\"bulk-action__agents\">\n <div class=\"triangle\">\n <svg height=\"12\" viewBox=\"0 0 24 12\" width=\"24\">\n <path d=\"M20 12l-8-8-12 12\" fill-rule=\"evenodd\" stroke-width=\"1px\" />\n </svg>\n </div>\n <div class=\"flex items-center justify-between header\">\n <span>{{ $t('BULK_ACTION.AGENT_SELECT_LABEL') }}</span>\n <NextButton ghost xs slate icon=\"i-lucide-x\" @click=\"onClose\" />\n </div>\n <div class=\"container\">\n <div\n v-if=\"assignableAgentsUiFlags.isFetching\"\n class=\"agent__list-loading\"\n >\n <Spinner />\n <p>{{ $t('BULK_ACTION.AGENT_LIST_LOADING') }}</p>\n </div>\n <div v-else class=\"agent__list-container\">\n <ul v-if=\"!selectedAgent\">\n <li class=\"search-container\">\n <div\n class=\"flex items-center justify-between h-8 gap-2 agent-list-search\"\n >\n <fluent-icon icon=\"search\" class=\"search-icon\" size=\"16\" />\n <input\n v-model=\"query\"\n type=\"search\"\n :placeholder=\"$t('BULK_ACTION.SEARCH_INPUT_PLACEHOLDER')\"\n class=\"reset-base !outline-0 !text-sm agent--search_input\"\n />\n </div>\n </li>\n <li v-for=\"agent in filteredAgents\" :key=\"agent.id\">\n <div class=\"agent-list-item\" @click=\"assignAgent(agent)\">\n <Avatar\n :name=\"agent.name\"\n :src=\"agent.thumbnail\"\n :status=\"agent.availability_status\"\n :size=\"22\"\n hide-offline-status\n rounded-full\n />\n <span class=\"my-0 text-n-slate-12\">\n {{ agent.name }}\n </span>\n </div>\n </li>\n </ul>\n <div v-else class=\"agent-confirmation-container\">\n <p v-if=\"selectedAgent.id\">\n {{\n $t('BULK_ACTION.ASSIGN_CONFIRMATION_LABEL', {\n conversationCount,\n conversationLabel,\n })\n }}\n <strong>\n {{ selectedAgent.name }}\n </strong>\n <span>{{$t('?')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport Spinner from 'shared/components/Spinner.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n Avatar,\n Spinner,\n NextButton,\n },\n props: {\n selectedInboxes: {\n type: Array,\n default: () => [],\n },\n conversationCount: {\n type: Number,\n default: 0,\n },\n },\n emits: ['select', 'close'],\n data() {\n return {\n query: '',\n selectedAgent: null,\n goBackToAgentList: false,\n };\n },\n computed: {\n ...mapGetters({\n uiFlags: 'bulkActions/getUIFlags',\n assignableAgentsUiFlags: 'inboxAssignableAgents/getUIFlags',\n }),\n filteredAgents() {\n if (this.query) {\n return this.assignableAgents.filter(agent =>\n agent.name.toLowerCase().includes(this.query.toLowerCase())\n );\n }\n return [\n {\n confirmed: true,\n name: 'None',\n id: null,\n role: 'agent',\n account_id: 0,\n email: 'None',\n },\n ...this.assignableAgents,\n ];\n },\n assignableAgents() {\n return this.$store.getters['inboxAssignableAgents/getAssignableAgents'](\n this.selectedInboxes.join(',')\n );\n },\n conversationLabel() {\n return this.conversationCount > 1 ? 'conversations' : 'conversation';\n },\n },\n mounted() {\n this.$store.dispatch('inboxAssignableAgents/fetch', this.selectedInboxes);\n },\n methods: {\n submit() {\n this.$emit('select', this.selectedAgent);\n },\n goBack() {\n this.goBackToAgentList = true;\n this.selectedAgent = null;\n },\n assignAgent(agent) {\n this.selectedAgent = agent;\n },\n onClose() {\n this.$emit('close');\n },\n onCloseAgentList() {\n if (this.selectedAgent === null && !this.goBackToAgentList) {\n this.onClose();\n }\n this.goBackToAgentList = false;\n },\n },\n};\n</script>\n\n<template>\n <div v-on-clickaway=\"onCloseAgentList\" class=\"bulk-action__agents\">\n <div class=\"triangle\">\n <svg height=\"12\" viewBox=\"0 0 24 12\" width=\"24\">\n <path d=\"M20 12l-8-8-12 12\" fill-rule=\"evenodd\" stroke-width=\"1px\" />\n </svg>\n </div>\n <div class=\"flex items-center justify-between header\">\n <span>{{ $t('BULK_ACTION.AGENT_SELECT_LABEL') }}</span>\n <NextButton ghost xs slate icon=\"i-lucide-x\" @click=\"onClose\" />\n </div>\n <div class=\"container\">\n <div\n v-if=\"assignableAgentsUiFlags.isFetching\"\n class=\"agent__list-loading\"\n >\n <Spinner />\n <p>{{ $t('BULK_ACTION.AGENT_LIST_LOADING') }}</p>\n </div>\n <div v-else class=\"agent__list-container\">\n <ul v-if=\"!selectedAgent\">\n <li class=\"search-container\">\n <div\n class=\"flex items-center justify-between h-8 gap-2 agent-list-search\"\n >\n <fluent-icon icon=\"search\" class=\"search-icon\" size=\"16\" />\n <input\n v-model=\"query\"\n type=\"search\"\n :placeholder=\"$t('BULK_ACTION.SEARCH_INPUT_PLACEHOLDER')\"\n class=\"reset-base !outline-0 !text-sm agent--search_input\"\n />\n </div>\n </li>\n <li v-for=\"agent in filteredAgents\" :key=\"agent.id\">\n <div class=\"agent-list-item\" @click=\"assignAgent(agent)\">\n <Avatar\n :name=\"agent.name\"\n :src=\"agent.thumbnail\"\n :status=\"agent.availability_status\"\n :size=\"22\"\n hide-offline-status\n rounded-full\n />\n <span class=\"my-0 text-n-slate-12\">\n {{ agent.name }}\n </span>\n </div>\n </li>\n </ul>\n <div v-else class=\"agent-confirmation-container\">\n <p v-if=\"selectedAgent.id\">\n {{\n $t('BULK_ACTION.ASSIGN_CONFIRMATION_LABEL', {\n conversationCount,\n conversationLabel,\n })\n }}\n <strong>\n {{ selectedAgent.name }}\n </strong>\n <span>?</span>\n </p>\n <p v-else>\n {{\n $t('BULK_ACTION.UNASSIGN_CONFIRMATION_LABEL', {\n conversationCount,\n conversationLabel,\n })\n }}\n </p>\n <div class=\"agent-confirmation-actions\">\n <NextButton\n faded\n sm\n slate\n type=\"reset\"\n :label=\"$t('BULK_ACTION.GO_BACK_LABEL')\"\n @click=\"goBack\"\n />\n <NextButton\n sm\n type=\"submit\"\n :label=\"$t('BULK_ACTION.YES')\"\n :is-loading=\"uiFlags.isUpdating\"\n @click=\"submit\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.bulk-action__agents {\n @apply max-w-[75%] absolute ltr:right-2 rtl:left-2 top-12 origin-top-right w-auto z-20 min-w-[15rem] bg-n-alpha-3 backdrop-blur-[100px] border-n-weak rounded-lg border border-solid shadow-md;\n .header {\n @apply p-2.5;\n\n span {\n @apply text-sm font-medium;\n }\n }\n\n .container {\n @apply overflow-y-auto max-h-[15rem];\n .agent__list-container {\n @apply h-full;\n }\n .agent-list-search {\n @apply py-0 px-2.5 bg-n-alpha-black2 border border-solid border-n-strong rounded-md;\n .search-icon {\n @apply text-n-slate-10;\n }\n\n .agent--search_input {\n @apply border-0 text-xs m-0 dark:bg-transparent bg-transparent h-[unset] w-full;\n }\n }\n }\n .triangle {\n @apply block z-10 absolute -top-3 text-left ltr:right-[--triangle-position] rtl:left-[--triangle-position];\n\n svg path {\n @apply fill-n-alpha-3 backdrop-blur-[100px] stroke-n-weak;\n }\n }\n}\nul {\n @apply m-0 list-none;\n\n li {\n &:last-child {\n .agent-list-item {\n @apply last:rounded-b-lg;\n }\n }\n }\n}\n\n.agent-list-item {\n @apply flex items-center p-2.5 gap-2 cursor-pointer hover:bg-n-slate-3 dark:hover:bg-n-solid-3;\n span {\n @apply text-sm;\n }\n}\n\n.agent-confirmation-container {\n @apply flex flex-col h-full p-2.5;\n p {\n @apply flex-grow;\n }\n .agent-confirmation-actions {\n @apply w-full grid grid-cols-2 gap-2.5;\n }\n}\n.search-container {\n @apply py-0 px-2.5 sticky top-0 z-20 bg-n-alpha-3 backdrop-blur-[100px];\n}\n\n.agent__list-loading {\n @apply m-2.5 rounded-md dark:bg-n-solid-3 bg-n-slate-2 flex items-center justify-center flex-col p-5 h-[calc(95%-6.25rem)];\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversationBulkActions/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversationBulkActions/LabelActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversationBulkActions/TeamActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversationBulkActions/UpdateActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/conversationCardComponents/CardLabels.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/crm/FunnelTimeline.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONVERSATION.CRM_INSIGHTS.FUNNEL.STEPS.${stepKey}`' dynamic key is used'","line":53,"column":11,"nodeType":"CallExpression","endLine":53,"endColumn":71},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONVERSATION.CRM_INSIGHTS.FUNNEL.STEPS.${stepKey.toUpperCase()}`' dynamic key is used'","line":64,"column":14,"nodeType":"CallExpression","endLine":66,"endColumn":8}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nexport default {\n props: {\n funnelData: {\n type: Object,\n default: () => ({}),\n },\n },\n data() {\n return {\n steps: [\n { key: 'info' },\n { key: 'price' },\n { key: 'availability' },\n { key: 'confirmation' },\n { key: 'closed' },\n ],\n };\n },\n computed: {\n stage() {\n return this.funnelData?.stage;\n },\n confidence() {\n return this.funnelData?.confidence;\n },\n reason() {\n return this.funnelData?.reason;\n },\n isClosedWon() {\n return this.stage === 'closed_won';\n },\n isClosedLost() {\n return this.stage === 'closed_lost';\n },\n currentStepKey() {\n if (this.isClosedWon || this.isClosedLost) return 'closed';\n return this.stage;\n },\n currentStepIndex() {\n return this.steps.findIndex(s => s.key === this.currentStepKey);\n },\n currentStepLabel() {\n if (this.isClosedWon) {\n return this.$t('CONVERSATION.CRM_INSIGHTS.FUNNEL.STEPS.CLOSED_WON');\n }\n if (this.isClosedLost) {\n return this.$t('CONVERSATION.CRM_INSIGHTS.FUNNEL.STEPS.CLOSED_LOST');\n }\n\n const stepKey = this.stage ? this.stage.toUpperCase() : '';\n return stepKey\n ? this.$t(`CONVERSATION.CRM_INSIGHTS.FUNNEL.STEPS.${stepKey}`)\n : this.stage;\n },\n statusColorClass() {\n if (this.isClosedWon) return 'bg-green-500';\n if (this.isClosedLost) return 'bg-slate-400';\n return 'bg-woot-500';\n },\n },\n methods: {\n getStepLabel(stepKey) {\n return this.$t(\n `CONVERSATION.CRM_INSIGHTS.FUNNEL.STEPS.${stepKey.toUpperCase()}`\n );\n },\n getStepClasses(stepKey, stepIndex) {\n if (stepKey === this.currentStepKey) {\n return this.getStepSpecificColor(stepKey);\n }\n\n if (this.currentStepIndex > stepIndex) {\n return this.getStepSpecificColor(stepKey);\n }\n\n // Future Steps\n return 'bg-slate-100 border-slate-200 dark:bg-slate-800 dark:border-slate-700';\n },\n getStepSpecificColor(stepKey) {\n const colors = {\n info: 'bg-blue-400 border-blue-400',\n price: 'bg-indigo-400 border-indigo-400',\n availability: 'bg-violet-400 border-violet-400',\n confirmation: 'bg-purple-400 border-purple-400',\n closed: this.isClosedWon\n ? 'bg-green-500 border-green-500'\n : 'bg-slate-400 border-slate-400',\n };\n return colors[stepKey] || 'bg-woot-500 border-woot-500';\n },\n },\n};\n</script>\n\n<template>\n <div\n class=\"px-4 py-4 bg-gradient-to-br from-violet-50/80 to-indigo-50/50 dark:from-violet-900/20 dark:to-indigo-900/10\"\n >\n <!-- Header -->\n <div class=\"flex items-center justify-between mb-3\">\n <div class=\"flex items-center gap-2\">\n <span\n class=\"w-6 h-6 rounded-md bg-violet-100 dark:bg-violet-800/40 flex items-center justify-center\"\n >\n <i\n class=\"i-lucide-git-branch text-sm text-violet-600 dark:text-violet-400\"\n />\n </span>\n <span\n class=\"text-xs font-semibold text-violet-700 dark:text-violet-300 uppercase tracking-wide\"\n >\n {{ $t('CONVERSATION.CRM_INSIGHTS.FUNNEL.TITLE') }}\n </span>\n </div>\n <span\n v-if=\"confidence\"\n class=\"text-[10px] text-violet-600 dark:text-violet-300 bg-violet-100 dark:bg-violet-800/40 px-2 py-1 rounded-full font-medium\"\n >\n {{\n $t('CONVERSATION.CRM_INSIGHTS.FUNNEL.TRUST', {\n percentage: Math.round(confidence * 100),\n })\n }}\n </span>\n </div>\n\n <!-- Timeline Steps -->\n <div class=\"flex items-center justify-between relative mb-4\">\n <!-- Connecting Line -->\n <div\n class=\"absolute top-1/2 left-0 w-full h-0.5 bg-violet-200/50 dark:bg-violet-800/30 -translate-y-1/2\"\n />\n\n <!-- Steps -->\n <div\n v-for=\"(step, index) in steps\"\n :key=\"step.key\"\n v-tooltip.top=\"getStepLabel(step.key)\"\n class=\"relative z-10 flex flex-col items-center group cursor-help\"\n >\n <div\n class=\"w-4 h-4 rounded-full border-2 transition-all duration-300 shadow-sm\"\n :class=\"getStepClasses(step.key, index)\"\n />\n </div>\n </div>\n\n <!-- Current Stage Info -->\n <div\n class=\"bg-white/70 dark:bg-violet-900/20 backdrop-blur-sm rounded-xl p-3 border border-violet-200/50 dark:border-violet-700/30 shadow-sm\"\n >\n <div class=\"flex items-center gap-2 mb-1.5\">\n <div class=\"w-2.5 h-2.5 rounded-full\" :class=\"statusColorClass\" />\n <span\n class=\"text-sm font-semibold text-violet-800 dark:text-violet-200\"\n >\n {{ currentStepLabel }}\n </span>\n </div>\n <p\n v-if=\"reason\"\n class=\"text-xs text-n-slate-11 dark:text-n-slate-10 leading-relaxed\"\n >\n {{ reason }}\n </p>\n <div\n class=\"mt-2 pt-2 border-t border-violet-100 dark:border-violet-800/30 text-[10px] text-violet-400 dark:text-violet-500 italic\"\n >\n {{ $t('CONVERSATION.CRM_INSIGHTS.FUNNEL.DISCLAIMER') }}\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/helpers/emailHeadHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/helpers/scrollTopCalculationHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/helpers/specs/emailHeadHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/helpers/specs/scrollTopCalculationHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/CreateIssue.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'dropdown.label' dynamic key is used'","line":249,"column":17,"nodeType":"CallExpression","endLine":249,"endColumn":35},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'dropdown.placeholder' dynamic key is used'","line":251,"column":23,"nodeType":"CallExpression","endLine":251,"endColumn":47}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { reactive, computed, onMounted, ref } from 'vue';\nimport { useVuelidate } from '@vuelidate/core';\nimport { useI18n } from 'vue-i18n';\nimport { useTrack } from 'dashboard/composables';\nimport { useAlert } from 'dashboard/composables';\nimport LinearAPI from 'dashboard/api/integrations/linear';\nimport validations from './validations';\nimport { parseLinearAPIErrorResponse } from 'dashboard/store/utils/api';\nimport SearchableDropdown from './SearchableDropdown.vue';\nimport { LINEAR_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n conversationId: {\n type: [Number, String],\n required: true,\n },\n title: {\n type: String,\n default: null,\n },\n});\n\nconst emit = defineEmits(['close']);\nconst { t } = useI18n();\n\nconst teams = ref([]);\nconst assignees = ref([]);\nconst projects = ref([]);\nconst labels = ref([]);\nconst statuses = ref([]);\n\nconst priorities = [\n { id: 0, name: 'No priority' },\n { id: 1, name: 'Urgent' },\n { id: 2, name: 'High' },\n { id: 3, name: 'Normal' },\n { id: 4, name: 'Low' },\n];\n\nconst statusDesiredOrder = [\n 'Backlog',\n 'Todo',\n 'In Progress',\n 'Done',\n 'Canceled',\n];\n\nconst isCreating = ref(false);\nconst inputStyles = { borderRadius: '0.75rem', fontSize: '0.875rem' };\n\nconst formState = reactive({\n title: '',\n description: '',\n teamId: '',\n assigneeId: '',\n labelId: '',\n stateId: '',\n priority: '',\n projectId: '',\n});\nconst v$ = useVuelidate(validations, formState);\n\nconst isSubmitDisabled = computed(\n () => v$.value.title.$invalid || isCreating.value\n);\nconst nameError = computed(() =>\n v$.value.title.$error\n ? t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.TITLE.REQUIRED_ERROR')\n : ''\n);\nconst teamError = computed(() =>\n v$.value.teamId.$error\n ? t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.TEAM.REQUIRED_ERROR')\n : ''\n);\n\nconst dropdowns = computed(() => {\n return [\n {\n type: 'teamId',\n label: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.TEAM.LABEL',\n items: teams.value,\n placeholder: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.TEAM.SEARCH',\n error: teamError.value,\n },\n {\n type: 'assigneeId',\n label: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.ASSIGNEE.LABEL',\n items: assignees.value,\n placeholder:\n 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.ASSIGNEE.SEARCH',\n error: '',\n },\n {\n type: 'labelId',\n label: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.LABEL.LABEL',\n items: labels.value,\n placeholder: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.LABEL.SEARCH',\n error: '',\n },\n {\n type: 'priority',\n label: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.PRIORITY.LABEL',\n items: priorities,\n placeholder:\n 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.PRIORITY.SEARCH',\n error: '',\n },\n {\n type: 'projectId',\n label: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.PROJECT.LABEL',\n items: projects.value,\n placeholder:\n 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.PROJECT.SEARCH',\n error: '',\n },\n {\n type: 'stateId',\n label: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.STATUS.LABEL',\n items: statuses.value,\n placeholder: 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.STATUS.SEARCH',\n error: '',\n },\n ];\n});\n\nconst onClose = () => emit('close');\n\nconst getTeams = async () => {\n try {\n const response = await LinearAPI.getTeams();\n teams.value = response.data;\n } catch (error) {\n const errorMessage = parseLinearAPIErrorResponse(\n error,\n t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.LOADING_TEAM_ERROR')\n );\n useAlert(errorMessage);\n }\n};\n\nconst getTeamEntities = async () => {\n try {\n const response = await LinearAPI.getTeamEntities(formState.teamId);\n assignees.value = response.data.users;\n labels.value = response.data.labels;\n projects.value = response.data.projects;\n statuses.value = statusDesiredOrder\n .map(name => response.data.states.find(status => status.name === name))\n .filter(Boolean);\n } catch (error) {\n const errorMessage = parseLinearAPIErrorResponse(\n error,\n t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.LOADING_TEAM_ENTITIES_ERROR')\n );\n useAlert(errorMessage);\n }\n};\n\nconst onChange = (item, type) => {\n formState[type] = item.id;\n if (type === 'teamId') {\n formState.assigneeId = '';\n formState.stateId = '';\n formState.labelId = '';\n formState.projectId = '';\n getTeamEntities();\n }\n};\n\nconst createIssue = async () => {\n v$.value.$touch();\n if (v$.value.$invalid) return;\n\n const payload = {\n team_id: formState.teamId,\n title: formState.title,\n description: formState.description || undefined,\n assignee_id: formState.assigneeId || undefined,\n project_id: formState.projectId || undefined,\n state_id: formState.stateId || undefined,\n priority: formState.priority || undefined,\n label_ids: formState.labelId ? [formState.labelId] : undefined,\n conversation_id: props.conversationId,\n };\n\n try {\n isCreating.value = true;\n const response = await LinearAPI.createIssue(payload);\n const { identifier: issueIdentifier } = response.data;\n await LinearAPI.link_issue(\n props.conversationId,\n issueIdentifier,\n props.title\n );\n useAlert(t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.CREATE_SUCCESS'));\n useTrack(LINEAR_EVENTS.CREATE_ISSUE);\n onClose();\n } catch (error) {\n const errorMessage = parseLinearAPIErrorResponse(\n error,\n t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.CREATE_ERROR')\n );\n useAlert(errorMessage);\n } finally {\n isCreating.value = false;\n }\n};\n\nonMounted(getTeams);\n</script>\n\n<template>\n <div>\n <woot-input\n v-model=\"formState.title\"\n :class=\"{ error: v$.title.$error }\"\n class=\"w-full\"\n :styles=\"{ ...inputStyles, padding: '0.375rem 0.75rem' }\"\n :label=\"$t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.TITLE.LABEL')\"\n :placeholder=\"\n $t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.TITLE.PLACEHOLDER')\n \"\n :error=\"nameError\"\n @input=\"v$.title.$touch\"\n />\n <label>\n {{ $t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.DESCRIPTION.LABEL') }}\n <textarea\n v-model=\"formState.description\"\n :style=\"{ ...inputStyles, padding: '0.5rem 0.75rem' }\"\n rows=\"3\"\n class=\"text-sm\"\n :placeholder=\"\n $t(\n 'INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.FORM.DESCRIPTION.PLACEHOLDER'\n )\n \"\n />\n </label>\n <div class=\"flex flex-col gap-4\">\n <SearchableDropdown\n v-for=\"dropdown in dropdowns\"\n :key=\"dropdown.type\"\n :type=\"dropdown.type\"\n :value=\"formState[dropdown.type]\"\n :label=\"$t(dropdown.label)\"\n :items=\"dropdown.items\"\n :placeholder=\"$t(dropdown.placeholder)\"\n :error=\"dropdown.error\"\n @change=\"onChange\"\n />\n </div>\n <div class=\"flex items-center justify-end w-full gap-2 mt-8\">\n <Button\n faded\n slate\n type=\"reset\"\n :label=\"$t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.CANCEL')\"\n @click.prevent=\"onClose\"\n />\n <Button\n type=\"submit\"\n :label=\"$t('INTEGRATION_SETTINGS.LINEAR.ADD_OR_LINK.CREATE')\"\n :disabled=\"isSubmitDisabled\"\n :is-loading=\"isCreating\"\n @click.prevent=\"createIssue\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/CreateOrLinkIssue.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/IssueHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/IssuesList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/LinearIssueItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/LinearSetupCTA.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/LinkIssue.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/SearchableDropdown.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/conversation/linear/validations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/forms/Input.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":45,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":45,"endColumn":19,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"warn"},"fix":{"range":[850,999],"text":""},"desc":"Remove the console.warn()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/forms/PhoneInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/mentions/MentionBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/modal/ConfirmDeleteModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/modal/ConfirmationModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/modal/DeleteModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/modal/WootKeyShortcutModal.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`KEYBOARD_SHORTCUTS.TITLE.${item.label}`' dynamic key is used'","line":19,"column":17,"nodeType":"CallExpression","endLine":19,"endColumn":60}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useDetectKeyboardLayout } from 'dashboard/composables/useDetectKeyboardLayout';\nimport { SHORTCUT_KEYS, KEYS } from './constants';\nimport {\n LAYOUT_QWERTZ,\n keysToModifyInQWERTZ,\n} from 'shared/helpers/KeyboardHelpers';\nimport Hotkey from 'dashboard/components/base/Hotkey.vue';\n\ndefineProps({ show: Boolean });\ndefineEmits(['close']);\n\nconst { t } = useI18n();\nconst currentLayout = ref(null);\n\nconst title = computed(\n () => item => t(`KEYBOARD_SHORTCUTS.TITLE.${item.label}`)\n);\n\n// Added this function to check if the keySet needs a shift key\n// This is used to display the shift key in the modal\n// If the current layout is QWERTZ and the keySet contains a key that needs a shift key\n// If layout is QWERTZ then we add the Shift+keysToModify to fix an known issue\n// https://github.com/chatwoot/chatwoot/issues/9492\nconst needsShiftKey = computed(\n () => keySet =>\n currentLayout.value === LAYOUT_QWERTZ &&\n keySet.some(key => keysToModifyInQWERTZ.has(key))\n);\n\nonMounted(async () => {\n currentLayout.value = await useDetectKeyboardLayout();\n});\n</script>\n\n<template>\n <woot-modal :show=\"show\" size=\"medium\" :on-close=\"() => $emit('close')\">\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header\n :header-title=\"$t('SIDEBAR_ITEMS.KEYBOARD_SHORTCUTS')\"\n />\n <div class=\"grid grid-cols-2 px-8 pt-0 pb-4 mt-6 gap-x-5 gap-y-3\">\n <div class=\"flex justify-between items-center min-w-[25rem]\">\n <h5 class=\"text-sm text-n-slate-12\">\n {{ $t('KEYBOARD_SHORTCUTS.TOGGLE_MODAL') }}\n </h5>\n <div class=\"flex items-center gap-2 mb-1 ml-2\">\n <Hotkey custom-class=\"min-h-[28px] min-w-[60px] normal-case key\">\n {{ KEYS.WIN }}\n </Hotkey>\n <Hotkey custom-class=\"min-h-[28px] min-w-[36px] key\">\n {{ KEYS.SLASH }}\n </Hotkey>\n </div>\n </div>\n </div>\n\n <div class=\"grid grid-cols-2 px-8 pt-0 pb-8 gap-x-5 gap-y-3\">\n <div\n v-for=\"shortcut in SHORTCUT_KEYS\"\n :key=\"shortcut.id\"\n class=\"flex justify-between items-center min-w-[25rem]\"\n >\n <h5 class=\"text-sm text-n-slate-12 min-w-[36px]\">\n {{ title(shortcut) }}\n </h5>\n <div class=\"flex items-center gap-2 mb-1 ml-2\">\n <template v-if=\"needsShiftKey(shortcut.keySet)\">\n <Hotkey custom-class=\"min-h-[28px] min-w-[36px] key\">\n {{ KEYS.SHIFT }}\n </Hotkey>\n </template>\n\n <template v-for=\"(key, index) in shortcut.displayKeys\" :key=\"index\">\n <template v-if=\"key !== KEYS.SLASH\">\n <Hotkey\n custom-class=\"min-h-[28px] min-w-[36px] key normal-case\"\n >\n {{ key }}\n </Hotkey>\n </template>\n <span\n v-else\n class=\"flex items-center text-sm font-semibold text-n-slate-12\"\n >\n {{ key }}\n </span>\n </template>\n </div>\n </div>\n </div>\n </div>\n </woot-modal>\n</template>\n\n<style scoped>\n.key {\n @apply py-2 px-2.5 font-semibold text-xs text-n-slate-12 bg-n-slate-4 dark:bg-n-slate-2 shadow border-b-2 rtl:border-l-2 ltr:border-r-2 border-n-strong;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/components/widgets/modal/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/chatlist/useBulkActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/chatlist/useChatListKeyboardEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/spec/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/spec/useAppearanceHotKeys.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/spec/useBulkActionsHotKeys.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/spec/useConversationHotKeys.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/spec/useGoToCommandHotKeys.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/spec/useInboxHotKeys.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/useAppearanceHotKeys.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/useBulkActionsHotKeys.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'action.title' dynamic key is used'","line":69,"column":14,"nodeType":"CallExpression","endLine":69,"endColumn":29},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'action.section' dynamic key is used'","line":70,"column":16,"nodeType":"CallExpression","endLine":70,"endColumn":33}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useMapGetter } from 'dashboard/composables/store';\nimport wootConstants from 'dashboard/constants/globals';\n\nimport {\n CMD_BULK_ACTION_SNOOZE_CONVERSATION,\n CMD_BULK_ACTION_REOPEN_CONVERSATION,\n CMD_BULK_ACTION_RESOLVE_CONVERSATION,\n} from 'dashboard/helper/commandbar/events';\nimport {\n ICON_SNOOZE_CONVERSATION,\n ICON_REOPEN_CONVERSATION,\n ICON_RESOLVE_CONVERSATION,\n} from 'dashboard/helper/commandbar/icons';\nimport { emitter } from 'shared/helpers/mitt';\n\nimport { createSnoozeHandlers } from 'dashboard/helper/commandbar/actions';\n\nconst SNOOZE_OPTIONS = wootConstants.SNOOZE_OPTIONS;\n\nconst createEmitHandler = event => () => emitter.emit(event);\n\nconst SNOOZE_CONVERSATION_BULK_ACTIONS = [\n {\n id: 'bulk_action_snooze_conversation',\n title: 'COMMAND_BAR.COMMANDS.SNOOZE_CONVERSATION',\n section: 'COMMAND_BAR.SECTIONS.BULK_ACTIONS',\n icon: ICON_SNOOZE_CONVERSATION,\n children: Object.values(SNOOZE_OPTIONS),\n },\n ...createSnoozeHandlers(\n CMD_BULK_ACTION_SNOOZE_CONVERSATION,\n 'bulk_action_snooze_conversation',\n 'COMMAND_BAR.SECTIONS.BULK_ACTIONS'\n ),\n];\n\nconst RESOLVED_CONVERSATION_BULK_ACTIONS = [\n {\n id: 'bulk_action_reopen_conversation',\n title: 'COMMAND_BAR.COMMANDS.REOPEN_CONVERSATION',\n section: 'COMMAND_BAR.SECTIONS.BULK_ACTIONS',\n icon: ICON_REOPEN_CONVERSATION,\n handler: createEmitHandler(CMD_BULK_ACTION_REOPEN_CONVERSATION),\n },\n];\n\nconst OPEN_CONVERSATION_BULK_ACTIONS = [\n {\n id: 'bulk_action_resolve_conversation',\n title: 'COMMAND_BAR.COMMANDS.RESOLVE_CONVERSATION',\n section: 'COMMAND_BAR.SECTIONS.BULK_ACTIONS',\n icon: ICON_RESOLVE_CONVERSATION,\n handler: createEmitHandler(CMD_BULK_ACTION_RESOLVE_CONVERSATION),\n },\n];\n\nexport function useBulkActionsHotKeys() {\n const { t } = useI18n();\n\n const selectedConversations = useMapGetter(\n 'bulkActions/getSelectedConversationIds'\n );\n\n const prepareActions = actions => {\n return actions.map(action => ({\n ...action,\n title: t(action.title),\n section: t(action.section),\n }));\n };\n\n const bulkActionsHotKeys = computed(() => {\n let actions = [];\n if (selectedConversations.value.length > 0) {\n actions = [\n ...SNOOZE_CONVERSATION_BULK_ACTIONS,\n ...RESOLVED_CONVERSATION_BULK_ACTIONS,\n ...OPEN_CONVERSATION_BULK_ACTIONS,\n ];\n }\n return prepareActions(actions);\n });\n\n return {\n bulkActionsHotKeys,\n };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/useConversationHotKeys.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'action.title' dynamic key is used'","line":48,"column":12,"nodeType":"CallExpression","endLine":48,"endColumn":27},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'action.section' dynamic key is used'","line":49,"column":14,"nodeType":"CallExpression","endLine":49,"endColumn":31}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useRoute } from 'vue-router';\nimport { emitter } from 'shared/helpers/mitt';\nimport { useConversationLabels } from 'dashboard/composables/useConversationLabels';\nimport { useAI } from 'dashboard/composables/useAI';\nimport { useAgentsList } from 'dashboard/composables/useAgentsList';\nimport { CMD_AI_ASSIST } from 'dashboard/helper/commandbar/events';\nimport { REPLY_EDITOR_MODES } from 'dashboard/components/widgets/WootWriter/constants';\n\nimport wootConstants from 'dashboard/constants/globals';\n\nimport {\n ICON_ADD_LABEL,\n ICON_ASSIGN_AGENT,\n ICON_ASSIGN_PRIORITY,\n ICON_ASSIGN_TEAM,\n ICON_REMOVE_LABEL,\n ICON_PRIORITY_URGENT,\n ICON_PRIORITY_HIGH,\n ICON_PRIORITY_LOW,\n ICON_PRIORITY_MEDIUM,\n ICON_PRIORITY_NONE,\n ICON_AI_ASSIST,\n ICON_AI_SUMMARY,\n ICON_AI_SHORTEN,\n ICON_AI_EXPAND,\n ICON_AI_GRAMMAR,\n} from 'dashboard/helper/commandbar/icons';\n\nimport {\n OPEN_CONVERSATION_ACTIONS,\n SNOOZE_CONVERSATION_ACTIONS,\n RESOLVED_CONVERSATION_ACTIONS,\n SEND_TRANSCRIPT_ACTION,\n UNMUTE_ACTION,\n MUTE_ACTION,\n} from 'dashboard/helper/commandbar/actions';\nimport {\n isAConversationRoute,\n isAInboxViewRoute,\n} from 'dashboard/helper/routeHelpers';\n\nconst prepareActions = (actions, t) => {\n return actions.map(action => ({\n ...action,\n title: t(action.title),\n section: t(action.section),\n }));\n};\n\nconst createPriorityOptions = (t, currentPriority) => {\n return [\n {\n label: t('CONVERSATION.PRIORITY.OPTIONS.NONE'),\n key: null,\n icon: ICON_PRIORITY_NONE,\n },\n {\n label: t('CONVERSATION.PRIORITY.OPTIONS.URGENT'),\n key: 'urgent',\n icon: ICON_PRIORITY_URGENT,\n },\n {\n label: t('CONVERSATION.PRIORITY.OPTIONS.HIGH'),\n key: 'high',\n icon: ICON_PRIORITY_HIGH,\n },\n {\n label: t('CONVERSATION.PRIORITY.OPTIONS.MEDIUM'),\n key: 'medium',\n icon: ICON_PRIORITY_MEDIUM,\n },\n {\n label: t('CONVERSATION.PRIORITY.OPTIONS.LOW'),\n key: 'low',\n icon: ICON_PRIORITY_LOW,\n },\n ].filter(item => item.key !== currentPriority);\n};\n\nconst createNonDraftMessageAIAssistActions = (t, replyMode) => {\n if (replyMode === REPLY_EDITOR_MODES.REPLY) {\n return [\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.REPLY_SUGGESTION'),\n key: 'reply_suggestion',\n icon: ICON_AI_ASSIST,\n },\n ];\n }\n return [\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.SUMMARIZE'),\n key: 'summarize',\n icon: ICON_AI_SUMMARY,\n },\n ];\n};\n\nconst createDraftMessageAIAssistActions = t => {\n return [\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.REPHRASE'),\n key: 'rephrase',\n icon: ICON_AI_ASSIST,\n },\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.FIX_SPELLING_GRAMMAR'),\n key: 'fix_spelling_grammar',\n icon: ICON_AI_GRAMMAR,\n },\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.EXPAND'),\n key: 'expand',\n icon: ICON_AI_EXPAND,\n },\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.SHORTEN'),\n key: 'shorten',\n icon: ICON_AI_SHORTEN,\n },\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.MAKE_FRIENDLY'),\n key: 'make_friendly',\n icon: ICON_AI_ASSIST,\n },\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.MAKE_FORMAL'),\n key: 'make_formal',\n icon: ICON_AI_ASSIST,\n },\n {\n label: t('INTEGRATION_SETTINGS.OPEN_AI.OPTIONS.SIMPLIFY'),\n key: 'simplify',\n icon: ICON_AI_ASSIST,\n },\n ];\n};\n\nexport function useConversationHotKeys() {\n const { t } = useI18n();\n const store = useStore();\n const route = useRoute();\n\n const {\n activeLabels,\n inactiveLabels,\n addLabelToConversation,\n removeLabelFromConversation,\n } = useConversationLabels();\n\n const { isAIIntegrationEnabled } = useAI();\n const { agentsList } = useAgentsList();\n\n const currentChat = useMapGetter('getSelectedChat');\n const replyMode = useMapGetter('draftMessages/getReplyEditorMode');\n const contextMenuChatId = useMapGetter('getContextMenuChatId');\n const teams = useMapGetter('teams/getTeams');\n const getDraftMessage = useMapGetter('draftMessages/get');\n\n const conversationId = computed(() => currentChat.value?.id);\n const draftKey = computed(\n () => `draft-${conversationId.value}-${replyMode.value}`\n );\n\n const draftMessage = computed(() => getDraftMessage.value(draftKey.value));\n\n const hasAnAssignedTeam = computed(() => !!currentChat.value?.meta?.team);\n\n const teamsList = computed(() => {\n if (hasAnAssignedTeam.value) {\n return [{ id: 0, name: t('TEAMS_SETTINGS.LIST.NONE') }, ...teams.value];\n }\n return teams.value;\n });\n\n const onChangeAssignee = action => {\n store.dispatch('assignAgent', {\n conversationId: currentChat.value.id,\n agentId: action.agentInfo.id,\n });\n };\n\n const onChangePriority = action => {\n store.dispatch('assignPriority', {\n conversationId: currentChat.value.id,\n priority: action.priority.key,\n });\n };\n\n const onChangeTeam = action => {\n store.dispatch('assignTeam', {\n conversationId: currentChat.value.id,\n teamId: action.teamInfo.id,\n });\n };\n\n const statusActions = computed(() => {\n const isOpen = currentChat.value?.status === wootConstants.STATUS_TYPE.OPEN;\n const isSnoozed =\n currentChat.value?.status === wootConstants.STATUS_TYPE.SNOOZED;\n const isResolved =\n currentChat.value?.status === wootConstants.STATUS_TYPE.RESOLVED;\n\n let actions = [];\n if (isOpen) {\n actions = [...OPEN_CONVERSATION_ACTIONS, ...SNOOZE_CONVERSATION_ACTIONS];\n } else if (isResolved || isSnoozed) {\n actions = RESOLVED_CONVERSATION_ACTIONS;\n }\n return prepareActions(actions, t);\n });\n\n const priorityOptions = computed(() =>\n createPriorityOptions(t, currentChat.value?.priority)\n );\n\n const assignAgentActions = computed(() => {\n const agentOptions = agentsList.value.map(agent => ({\n id: `agent-${agent.id}`,\n title: agent.name,\n parent: 'assign_an_agent',\n section: t('COMMAND_BAR.SECTIONS.CHANGE_ASSIGNEE'),\n agentInfo: agent,\n icon: ICON_ASSIGN_AGENT,\n handler: onChangeAssignee,\n }));\n return [\n {\n id: 'assign_an_agent',\n title: t('COMMAND_BAR.COMMANDS.ASSIGN_AN_AGENT'),\n section: t('COMMAND_BAR.SECTIONS.CONVERSATION'),\n icon: ICON_ASSIGN_AGENT,\n children: agentOptions.map(option => option.id),\n },\n ...agentOptions,\n ];\n });\n\n const assignPriorityActions = computed(() => {\n const options = priorityOptions.value.map(priority => ({\n id: `priority-${priority.key}`,\n title: priority.label,\n parent: 'assign_priority',\n section: t('COMMAND_BAR.SECTIONS.CHANGE_PRIORITY'),\n priority: priority,\n icon: priority.icon,\n handler: onChangePriority,\n }));\n return [\n {\n id: 'assign_priority',\n title: t('COMMAND_BAR.COMMANDS.ASSIGN_PRIORITY'),\n section: t('COMMAND_BAR.SECTIONS.CONVERSATION'),\n icon: ICON_ASSIGN_PRIORITY,\n children: options.map(option => option.id),\n },\n ...options,\n ];\n });\n\n const assignTeamActions = computed(() => {\n const teamOptions = teamsList.value.map(team => ({\n id: `team-${team.id}`,\n title: team.name,\n parent: 'assign_a_team',\n section: t('COMMAND_BAR.SECTIONS.CHANGE_TEAM'),\n teamInfo: team,\n icon: ICON_ASSIGN_TEAM,\n handler: onChangeTeam,\n }));\n return [\n {\n id: 'assign_a_team',\n title: t('COMMAND_BAR.COMMANDS.ASSIGN_A_TEAM'),\n section: t('COMMAND_BAR.SECTIONS.CONVERSATION'),\n icon: ICON_ASSIGN_TEAM,\n children: teamOptions.map(option => option.id),\n },\n ...teamOptions,\n ];\n });\n\n const addLabelActions = computed(() => {\n const availableLabels = inactiveLabels.value.map(label => ({\n id: label.title,\n title: `#${label.title}`,\n parent: 'add_a_label_to_the_conversation',\n section: t('COMMAND_BAR.SECTIONS.ADD_LABEL'),\n icon: ICON_ADD_LABEL,\n handler: action => addLabelToConversation({ title: action.id }),\n }));\n return [\n ...availableLabels,\n {\n id: 'add_a_label_to_the_conversation',\n title: t('COMMAND_BAR.COMMANDS.ADD_LABELS_TO_CONVERSATION'),\n section: t('COMMAND_BAR.SECTIONS.CONVERSATION'),\n icon: ICON_ADD_LABEL,\n children: inactiveLabels.value.map(label => label.title),\n },\n ];\n });\n\n const removeLabelActions = computed(() => {\n const activeLabelsComputed = activeLabels.value.map(label => ({\n id: label.title,\n title: `#${label.title}`,\n parent: 'remove_a_label_to_the_conversation',\n section: t('COMMAND_BAR.SECTIONS.REMOVE_LABEL'),\n icon: ICON_REMOVE_LABEL,\n handler: action => removeLabelFromConversation(action.id),\n }));\n return [\n ...activeLabelsComputed,\n {\n id: 'remove_a_label_to_the_conversation',\n title: t('COMMAND_BAR.COMMANDS.REMOVE_LABEL_FROM_CONVERSATION'),\n section: t('COMMAND_BAR.SECTIONS.CONVERSATION'),\n icon: ICON_REMOVE_LABEL,\n children: activeLabels.value.map(label => label.title),\n },\n ];\n });\n\n const labelActions = computed(() => {\n if (activeLabels.value.length) {\n return [...addLabelActions.value, ...removeLabelActions.value];\n }\n return addLabelActions.value;\n });\n\n const conversationAdditionalActions = computed(() => {\n return prepareActions(\n [\n currentChat.value.muted ? UNMUTE_ACTION : MUTE_ACTION,\n SEND_TRANSCRIPT_ACTION,\n ],\n t\n );\n });\n\n const AIAssistActions = computed(() => {\n const aiOptions = draftMessage.value\n ? createDraftMessageAIAssistActions(t)\n : createNonDraftMessageAIAssistActions(t, replyMode.value);\n const options = aiOptions.map(item => ({\n id: `ai-assist-${item.key}`,\n title: item.label,\n parent: 'ai_assist',\n section: t('COMMAND_BAR.SECTIONS.AI_ASSIST'),\n priority: item,\n icon: item.icon,\n handler: () => emitter.emit(CMD_AI_ASSIST, item.key),\n }));\n return [\n {\n id: 'ai_assist',\n title: t('COMMAND_BAR.COMMANDS.AI_ASSIST'),\n section: t('COMMAND_BAR.SECTIONS.AI_ASSIST'),\n icon: ICON_AI_ASSIST,\n children: options.map(option => option.id),\n },\n ...options,\n ];\n });\n\n const isConversationOrInboxRoute = computed(() => {\n return isAConversationRoute(route.name) || isAInboxViewRoute(route.name);\n });\n\n const shouldShowSnoozeOption = computed(() => {\n return (\n isAConversationRoute(route.name, true, false) && contextMenuChatId.value\n );\n });\n\n const getDefaultConversationHotKeys = computed(() => {\n const defaultConversationHotKeys = [\n ...statusActions.value,\n ...conversationAdditionalActions.value,\n ...assignAgentActions.value,\n ...assignTeamActions.value,\n ...labelActions.value,\n ...assignPriorityActions.value,\n ];\n if (isAIIntegrationEnabled.value) {\n return [...defaultConversationHotKeys, ...AIAssistActions.value];\n }\n return defaultConversationHotKeys;\n });\n\n const conversationHotKeys = computed(() => {\n if (shouldShowSnoozeOption.value) {\n return prepareActions(SNOOZE_CONVERSATION_ACTIONS, t);\n }\n if (isConversationOrInboxRoute.value) {\n return getDefaultConversationHotKeys.value;\n }\n return [];\n });\n\n return {\n conversationHotKeys,\n };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/useGoToCommandHotKeys.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'command.section' dynamic key is used'","line":209,"column":16,"nodeType":"CallExpression","endLine":209,"endColumn":34},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'command.title' dynamic key is used'","line":210,"column":14,"nodeType":"CallExpression","endLine":210,"endColumn":30}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useMapGetter } from 'dashboard/composables/store';\nimport { useRouter } from 'vue-router';\nimport { useAdmin } from 'dashboard/composables/useAdmin';\nimport {\n ICON_ACCOUNT_SETTINGS,\n ICON_AGENT_REPORTS,\n ICON_APPS,\n ICON_CANNED_RESPONSE,\n ICON_CONTACT_DASHBOARD,\n ICON_CONVERSATION_DASHBOARD,\n ICON_INBOXES,\n ICON_INBOX_REPORTS,\n ICON_LABELS,\n ICON_LABEL_REPORTS,\n ICON_NOTIFICATION,\n ICON_REPORTS_OVERVIEW,\n ICON_TEAM_REPORTS,\n ICON_USER_PROFILE,\n ICON_CONVERSATION_REPORTS,\n} from 'dashboard/helper/commandbar/icons';\nimport { frontendURL } from 'dashboard/helper/URLHelper';\nimport { FEATURE_FLAGS } from 'dashboard/featureFlags';\n\nconst GO_TO_COMMANDS = [\n {\n id: 'goto_conversation_dashboard',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_CONVERSATION_DASHBOARD',\n section: 'COMMAND_BAR.SECTIONS.GENERAL',\n icon: ICON_CONVERSATION_DASHBOARD,\n path: accountId => `accounts/${accountId}/dashboard`,\n role: ['administrator', 'agent'],\n },\n {\n id: 'goto_contacts_dashboard',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_CONTACTS_DASHBOARD',\n section: 'COMMAND_BAR.SECTIONS.GENERAL',\n featureFlag: FEATURE_FLAGS.CRM,\n icon: ICON_CONTACT_DASHBOARD,\n path: accountId => `accounts/${accountId}/contacts`,\n role: ['administrator', 'agent'],\n },\n {\n id: 'open_reports_overview',\n section: 'COMMAND_BAR.SECTIONS.REPORTS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_REPORTS_OVERVIEW',\n featureFlag: FEATURE_FLAGS.REPORTS,\n icon: ICON_REPORTS_OVERVIEW,\n path: accountId => `accounts/${accountId}/reports/overview`,\n role: ['administrator'],\n },\n {\n id: 'open_conversation_reports',\n section: 'COMMAND_BAR.SECTIONS.REPORTS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_CONVERSATION_REPORTS',\n featureFlag: FEATURE_FLAGS.REPORTS,\n icon: ICON_CONVERSATION_REPORTS,\n path: accountId => `accounts/${accountId}/reports/conversation`,\n role: ['administrator'],\n },\n {\n id: 'open_agent_reports',\n section: 'COMMAND_BAR.SECTIONS.REPORTS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_AGENT_REPORTS',\n featureFlag: FEATURE_FLAGS.REPORTS,\n icon: ICON_AGENT_REPORTS,\n path: accountId => `accounts/${accountId}/reports/agent`,\n role: ['administrator'],\n },\n {\n id: 'open_label_reports',\n section: 'COMMAND_BAR.SECTIONS.REPORTS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_LABEL_REPORTS',\n featureFlag: FEATURE_FLAGS.REPORTS,\n icon: ICON_LABEL_REPORTS,\n path: accountId => `accounts/${accountId}/reports/label`,\n role: ['administrator'],\n },\n {\n id: 'open_inbox_reports',\n section: 'COMMAND_BAR.SECTIONS.REPORTS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_INBOX_REPORTS',\n featureFlag: FEATURE_FLAGS.REPORTS,\n icon: ICON_INBOX_REPORTS,\n path: accountId => `accounts/${accountId}/reports/inboxes`,\n role: ['administrator'],\n },\n {\n id: 'open_team_reports',\n section: 'COMMAND_BAR.SECTIONS.REPORTS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_TEAM_REPORTS',\n featureFlag: FEATURE_FLAGS.REPORTS,\n icon: ICON_TEAM_REPORTS,\n path: accountId => `accounts/${accountId}/reports/teams`,\n role: ['administrator'],\n },\n {\n id: 'open_agent_settings',\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_AGENTS',\n featureFlag: FEATURE_FLAGS.AGENT_MANAGEMENT,\n icon: ICON_AGENT_REPORTS,\n path: accountId => `accounts/${accountId}/settings/agents/list`,\n role: ['administrator'],\n },\n {\n id: 'open_team_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_TEAMS',\n featureFlag: FEATURE_FLAGS.TEAM_MANAGEMENT,\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_TEAM_REPORTS,\n path: accountId => `accounts/${accountId}/settings/teams/list`,\n role: ['administrator'],\n },\n {\n id: 'open_inbox_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_INBOXES',\n featureFlag: FEATURE_FLAGS.INBOX_MANAGEMENT,\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_INBOXES,\n path: accountId => `accounts/${accountId}/settings/inboxes/list`,\n role: ['administrator'],\n },\n {\n id: 'open_label_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_LABELS',\n featureFlag: FEATURE_FLAGS.LABELS,\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_LABELS,\n path: accountId => `accounts/${accountId}/settings/labels/list`,\n role: ['administrator'],\n },\n {\n id: 'open_canned_response_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_CANNED_RESPONSES',\n featureFlag: FEATURE_FLAGS.CANNED_RESPONSES,\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_CANNED_RESPONSE,\n path: accountId => `accounts/${accountId}/settings/canned-response/list`,\n role: ['administrator', 'agent'],\n },\n {\n id: 'open_applications_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_APPLICATIONS',\n featureFlag: FEATURE_FLAGS.INTEGRATIONS,\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_APPS,\n path: accountId => `accounts/${accountId}/settings/applications`,\n role: ['administrator'],\n },\n {\n id: 'open_account_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_ACCOUNT',\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_ACCOUNT_SETTINGS,\n path: accountId => `accounts/${accountId}/settings/general`,\n role: ['administrator'],\n },\n {\n id: 'open_profile_settings',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_SETTINGS_PROFILE',\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_USER_PROFILE,\n path: accountId => `accounts/${accountId}/profile/settings`,\n role: ['administrator', 'agent'],\n },\n {\n id: 'open_notifications',\n title: 'COMMAND_BAR.COMMANDS.GO_TO_NOTIFICATIONS',\n section: 'COMMAND_BAR.SECTIONS.SETTINGS',\n icon: ICON_NOTIFICATION,\n path: accountId => `accounts/${accountId}/notifications`,\n role: ['administrator', 'agent'],\n },\n];\n\nexport function useGoToCommandHotKeys() {\n const { t } = useI18n();\n const router = useRouter();\n const { isAdmin } = useAdmin();\n\n const currentAccountId = useMapGetter('getCurrentAccountId');\n const isFeatureEnabledOnAccount = useMapGetter(\n 'accounts/isFeatureEnabledonAccount'\n );\n\n const openRoute = url => {\n router.push(frontendURL(url));\n };\n\n const goToCommandHotKeys = computed(() => {\n let commands = GO_TO_COMMANDS.filter(cmd => {\n if (cmd.featureFlag) {\n return isFeatureEnabledOnAccount.value(\n currentAccountId.value,\n cmd.featureFlag\n );\n }\n return true;\n });\n\n if (!isAdmin.value) {\n commands = commands.filter(command => command.role.includes('agent'));\n }\n\n return commands.map(command => ({\n id: command.id,\n section: t(command.section),\n title: t(command.title),\n icon: command.icon,\n handler: () => openRoute(command.path(currentAccountId.value)),\n }));\n });\n\n return {\n goToCommandHotKeys,\n };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/commands/useInboxHotKeys.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'action.title' dynamic key is used'","line":73,"column":14,"nodeType":"CallExpression","endLine":73,"endColumn":29},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'action.section' dynamic key is used'","line":74,"column":33,"nodeType":"CallExpression","endLine":74,"endColumn":50}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport wootConstants from 'dashboard/constants/globals';\n\nimport { CMD_SNOOZE_NOTIFICATION } from 'dashboard/helper/commandbar/events';\nimport { ICON_SNOOZE_NOTIFICATION } from 'dashboard/helper/commandbar/icons';\nimport { emitter } from 'shared/helpers/mitt';\n\nimport { isAInboxViewRoute } from 'dashboard/helper/routeHelpers';\n\nconst SNOOZE_OPTIONS = wootConstants.SNOOZE_OPTIONS;\n\nconst createSnoozeHandler = option => () =>\n emitter.emit(CMD_SNOOZE_NOTIFICATION, option);\n\nconst INBOX_SNOOZE_EVENTS = [\n {\n id: 'snooze_notification',\n title: 'COMMAND_BAR.COMMANDS.SNOOZE_NOTIFICATION',\n icon: ICON_SNOOZE_NOTIFICATION,\n children: Object.values(SNOOZE_OPTIONS),\n },\n {\n id: SNOOZE_OPTIONS.AN_HOUR_FROM_NOW,\n title: 'COMMAND_BAR.COMMANDS.AN_HOUR_FROM_NOW',\n parent: 'snooze_notification',\n section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',\n icon: ICON_SNOOZE_NOTIFICATION,\n handler: createSnoozeHandler(SNOOZE_OPTIONS.AN_HOUR_FROM_NOW),\n },\n {\n id: SNOOZE_OPTIONS.UNTIL_TOMORROW,\n title: 'COMMAND_BAR.COMMANDS.UNTIL_TOMORROW',\n section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',\n parent: 'snooze_notification',\n icon: ICON_SNOOZE_NOTIFICATION,\n handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_TOMORROW),\n },\n {\n id: SNOOZE_OPTIONS.UNTIL_NEXT_WEEK,\n title: 'COMMAND_BAR.COMMANDS.UNTIL_NEXT_WEEK',\n section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',\n parent: 'snooze_notification',\n icon: ICON_SNOOZE_NOTIFICATION,\n handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_NEXT_WEEK),\n },\n {\n id: SNOOZE_OPTIONS.UNTIL_NEXT_MONTH,\n title: 'COMMAND_BAR.COMMANDS.UNTIL_NEXT_MONTH',\n section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',\n parent: 'snooze_notification',\n icon: ICON_SNOOZE_NOTIFICATION,\n handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_NEXT_MONTH),\n },\n {\n id: SNOOZE_OPTIONS.UNTIL_CUSTOM_TIME,\n title: 'COMMAND_BAR.COMMANDS.UNTIL_CUSTOM_TIME',\n section: 'COMMAND_BAR.SECTIONS.SNOOZE_NOTIFICATION',\n parent: 'snooze_notification',\n icon: ICON_SNOOZE_NOTIFICATION,\n handler: createSnoozeHandler(SNOOZE_OPTIONS.UNTIL_CUSTOM_TIME),\n },\n];\n\nexport function useInboxHotKeys() {\n const { t } = useI18n();\n const route = useRoute();\n\n const prepareActions = actions => {\n return actions.map(action => ({\n ...action,\n title: t(action.title),\n section: action.section ? t(action.section) : undefined,\n }));\n };\n\n const inboxHotKeys = computed(() => {\n if (isAInboxViewRoute(route.name)) {\n return prepareActions(INBOX_SNOOZE_EVENTS);\n }\n return [];\n });\n\n return {\n inboxHotKeys,\n };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/emitter.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/loadWithRetry.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/emitter.spec.js","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Hello world' is used","line":25,"column":21,"nodeType":null,"endLine":25,"endColumn":32}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { shallowMount } from '@vue/test-utils';\nimport { emitter } from 'shared/helpers/mitt';\nimport { useEmitter } from '../emitter';\nimport { defineComponent } from 'vue';\n\nvi.mock('shared/helpers/mitt', () => ({\n emitter: {\n on: vi.fn(),\n off: vi.fn(),\n },\n}));\n\ndescribe('useEmitter', () => {\n const eventName = 'my-event';\n const callback = vi.fn();\n\n let wrapper;\n\n const TestComponent = defineComponent({\n setup() {\n return {\n cleanup: useEmitter(eventName, callback),\n };\n },\n template: '<div>Hello world</div>',\n });\n\n beforeEach(() => {\n wrapper = shallowMount(TestComponent);\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n it('should add an event listener on mount', () => {\n expect(emitter.on).toHaveBeenCalledWith(eventName, callback);\n });\n\n it('should remove the event listener when the component is unmounted', async () => {\n await wrapper.unmount();\n expect(emitter.off).toHaveBeenCalledWith(eventName, callback);\n });\n\n it('should return the cleanup function', () => {\n const cleanup = wrapper.vm.cleanup;\n expect(typeof cleanup).toBe('function');\n cleanup();\n expect(emitter.off).toHaveBeenCalledWith(eventName, callback);\n });\n});\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/fixtures/agentFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/fixtures/reportFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/index.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useAI.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useAccount.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useAdmin.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useAgentsList.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useAutomation.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useConfig.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useConversationLabels.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useDetectKeyboardLayout.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useFileUpload.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useFontSize.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useImageZoom.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useImpersonation.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useInbox.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useIntegrationHook.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useKeyboardEvents.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useKeyboardNavigableList.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useMacros.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useReportMetrics.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useTranslations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/spec/useUISettings.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/store.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useAI.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useAccount.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useAdmin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useAgentsList.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useAutomation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useAutomationValues.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.MESSAGE_TYPES.${item.i18nKey}`' dynamic key is used'","line":70,"column":13,"nodeType":"CallExpression","endLine":70,"endColumn":58},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.PRIORITY_TYPES.${item.i18nKey}`' dynamic key is used'","line":77,"column":13,"nodeType":"CallExpression","endLine":77,"endColumn":59}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport languages from 'dashboard/components/widgets/conversation/advancedFilterItems/languages';\nimport countries from 'shared/constants/countries';\nimport { useStoreGetters, useMapGetter } from 'dashboard/composables/store';\n\nimport {\n getActionOptions,\n getConditionOptions,\n} from 'dashboard/helper/automationHelper';\nimport {\n MESSAGE_CONDITION_VALUES,\n PRIORITY_CONDITION_VALUES,\n} from 'dashboard/constants/automation';\n\n/**\n * This is a shared composables that holds utilities used to build dropdown and file options\n * @returns {Object} An object containing various automation-related functions and computed properties.\n */\nexport default function useAutomationValues() {\n const getters = useStoreGetters();\n const { t } = useI18n();\n const agents = useMapGetter('agents/getAgents');\n const campaigns = useMapGetter('campaigns/getAllCampaigns');\n const contacts = useMapGetter('contacts/getContacts');\n const inboxes = useMapGetter('inboxes/getInboxes');\n const labels = useMapGetter('labels/getLabels');\n const teams = useMapGetter('teams/getTeams');\n const slaPolicies = useMapGetter('sla/getSLA');\n\n const booleanFilterOptions = computed(() => [\n { id: true, name: t('FILTER.ATTRIBUTE_LABELS.TRUE') },\n { id: false, name: t('FILTER.ATTRIBUTE_LABELS.FALSE') },\n ]);\n\n const statusFilterItems = computed(() => {\n return {\n open: {\n TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.open.TEXT'),\n },\n resolved: {\n TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.resolved.TEXT'),\n },\n pending: {\n TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.pending.TEXT'),\n },\n snoozed: {\n TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.snoozed.TEXT'),\n },\n all: {\n TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.all.TEXT'),\n },\n };\n });\n\n const statusFilterOptions = computed(() => {\n const statusFilters = statusFilterItems.value;\n return [\n ...Object.keys(statusFilters).map(status => ({\n id: status,\n name: statusFilters[status].TEXT,\n })),\n { id: 'all', name: t('CHAT_LIST.FILTER_ALL') },\n ];\n });\n\n const messageTypeOptions = computed(() =>\n MESSAGE_CONDITION_VALUES.map(item => ({\n id: item.id,\n name: t(`AUTOMATION.MESSAGE_TYPES.${item.i18nKey}`),\n }))\n );\n\n const priorityOptions = computed(() =>\n PRIORITY_CONDITION_VALUES.map(item => ({\n id: item.id,\n name: t(`AUTOMATION.PRIORITY_TYPES.${item.i18nKey}`),\n }))\n );\n\n /**\n * Adds a translated \"None\" option to the beginning of a list\n * @param {Array} list - The list to add \"None\" to\n * @returns {Array} A new array with \"None\" option at the beginning\n */\n const addNoneToList = list => [\n {\n id: 'nil',\n name: t('AUTOMATION.NONE_OPTION') || 'None',\n },\n ...(list || []),\n ];\n\n /**\n * Gets the condition dropdown values for a given type.\n * @param {string} type - The type of condition.\n * @returns {Array} An array of condition dropdown values.\n */\n const getConditionDropdownValues = type => {\n return getConditionOptions({\n agents: agents.value,\n booleanFilterOptions: booleanFilterOptions.value,\n campaigns: campaigns.value,\n contacts: contacts.value,\n customAttributes: getters['attributes/getAttributes'].value,\n inboxes: inboxes.value,\n labels: labels.value,\n statusFilterOptions: statusFilterOptions.value,\n priorityOptions: priorityOptions.value,\n messageTypeOptions: messageTypeOptions.value,\n teams: teams.value,\n languages,\n countries,\n type,\n });\n };\n\n /**\n * Gets the action dropdown values for a given type.\n * @param {string} type - The type of action.\n * @returns {Array} An array of action dropdown values.\n */\n const getActionDropdownValues = type => {\n return getActionOptions({\n agents: agents.value,\n labels: labels.value,\n teams: teams.value,\n slaPolicies: slaPolicies.value,\n languages,\n type,\n addNoneToListFn: addNoneToList,\n priorityOptions: priorityOptions.value,\n });\n };\n\n return {\n booleanFilterOptions,\n statusFilterItems,\n statusFilterOptions,\n priorityOptions,\n messageTypeOptions,\n getConditionDropdownValues,\n getActionDropdownValues,\n agents,\n campaigns,\n contacts,\n inboxes,\n labels,\n teams,\n slaPolicies,\n };\n}\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useCallSession.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":77,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":77,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[2184,2229],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useCaptain.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useConfig.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useConversationLabels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useDetectKeyboardLayout.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useEditableAutomation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useFileUpload.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useFontSize.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getFontSizeLabelKey(name)' dynamic key is used'","line":48,"column":10,"nodeType":"CallExpression","endLine":48,"endColumn":38}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @file useFontSize.js\n * @description A composable for managing font size settings throughout the application.\n * This handles font size selection, application to the DOM, and persistence in user settings.\n */\n\nimport { computed, watch } from 'vue';\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\n\n/**\n * Font size options with their pixel values\n * @type {Object}\n */\nconst FONT_SIZE_OPTIONS = {\n SMALLER: '14px',\n SMALL: '15px',\n DEFAULT: '16px',\n LARGE: '18px',\n LARGER: '20px',\n};\n\n/**\n * Array of font size option keys\n * @type {Array<string>}\n */\nconst FONT_SIZE_NAMES = Object.keys(FONT_SIZE_OPTIONS);\n\n/**\n * Get font size label translation key\n *\n * @param {string} name - Font size name\n * @returns {string} Translation key\n */\nconst getFontSizeLabelKey = name =>\n `PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.${name}`;\n\n/**\n * Create font size option object\n *\n * @param {Function} t - Translation function\n * @param {string} name - Font size name\n * @returns {Object} Font size option with value and label\n */\nconst createFontSizeOption = (t, name) => ({\n value: FONT_SIZE_OPTIONS[name],\n label: t(getFontSizeLabelKey(name)),\n});\n\n/**\n * Apply font size value to document root\n *\n * @param {string} pixelValue - Font size value in pixels\n */\nconst applyFontSizeToDOM = pixelValue => {\n document.documentElement.style.setProperty(\n 'font-size',\n pixelValue ?? FONT_SIZE_OPTIONS.DEFAULT\n );\n};\n\n/**\n * Font size management composable\n *\n * @returns {Object} Font size utilities and state\n * @property {Array} fontSizeOptions - Array of font size options for select components\n * @property {import('vue').ComputedRef<string>} currentFontSize - Current font size from UI settings\n * @property {Function} applyFontSize - Function to apply font size to document\n * @property {Function} updateFontSize - Function to update font size in settings with alert feedback\n */\nexport const useFontSize = () => {\n const { uiSettings, updateUISettings } = useUISettings();\n const { t } = useI18n();\n\n /**\n * Font size options for select dropdown\n * @type {Array<{value: string, label: string}>}\n */\n const fontSizeOptions = computed(() =>\n FONT_SIZE_NAMES.map(name => createFontSizeOption(t, name))\n );\n\n /**\n * Current font size from UI settings\n * @type {import('vue').ComputedRef<string>}\n */\n const currentFontSize = computed(\n () => uiSettings.value.font_size || FONT_SIZE_OPTIONS.DEFAULT\n );\n\n /**\n * Apply font size to document root\n * @param {string} pixelValue - Font size in pixels (e.g., '16px')\n * @returns {void}\n */\n const applyFontSize = pixelValue => {\n // Use requestAnimationFrame for better performance\n requestAnimationFrame(() => applyFontSizeToDOM(pixelValue));\n };\n\n /**\n * Update font size in settings and apply to document\n * Shows success/error alerts\n * @param {string} pixelValue - Font size in pixels (e.g., '16px')\n * @returns {Promise<void>}\n */\n const updateFontSize = async pixelValue => {\n try {\n await updateUISettings({ font_size: pixelValue });\n applyFontSize(pixelValue);\n useAlert(\n t('PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.UPDATE_SUCCESS')\n );\n } catch (error) {\n useAlert(\n t('PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.UPDATE_ERROR')\n );\n }\n };\n\n // Watch for changes to the font size in UI settings\n watch(\n () => uiSettings.value.font_size,\n newSize => {\n applyFontSize(newSize);\n },\n { immediate: true }\n );\n\n return {\n fontSizeOptions,\n currentFontSize,\n applyFontSize,\n updateFontSize,\n };\n};\n\nexport default useFontSize;\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useImageZoom.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useImpersonation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useInbox.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useIntegrationHook.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useKeyboardEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useKeyboardNavigableList.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useLiveRefresh.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useMacros.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MACROS.PRIORITY_TYPES.${item.i18nKey}`' dynamic key is used'","line":39,"column":17,"nodeType":"CallExpression","endLine":39,"endColumn":59}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { PRIORITY_CONDITION_VALUES } from 'dashboard/constants/automation';\n\n/**\n * Composable for handling macro-related functionality\n * @returns {Object} An object containing the getMacroDropdownValues function\n */\nexport const useMacros = () => {\n const { t } = useI18n();\n const getters = useStoreGetters();\n\n const labels = computed(() => getters['labels/getLabels'].value);\n const teams = computed(() => getters['teams/getTeams'].value);\n const agents = computed(() => getters['agents/getAgents'].value);\n\n /**\n * Get dropdown values based on the specified type\n * @param {string} type - The type of dropdown values to retrieve\n * @returns {Array} An array of dropdown values\n */\n const getMacroDropdownValues = type => {\n switch (type) {\n case 'assign_team':\n case 'send_email_to_team':\n return teams.value;\n case 'assign_agent':\n return [{ id: 'self', name: 'Self' }, ...agents.value];\n case 'add_label':\n case 'remove_label':\n return labels.value.map(i => ({\n id: i.title,\n name: i.title,\n }));\n case 'change_priority':\n return PRIORITY_CONDITION_VALUES.map(item => ({\n id: item.id,\n name: t(`MACROS.PRIORITY_TYPES.${item.i18nKey}`),\n }));\n default:\n return [];\n }\n };\n\n return {\n getMacroDropdownValues,\n };\n};\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/usePolicy.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useReportMetrics.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useTransformKeys.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useTranslations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/useUISettings.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/composables/utils/useKbd.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/appEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/automation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/editor.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/globals.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/installationTypes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/llmModels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/localStorage.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/permissions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/constants/sessionStorage.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/featureFlags.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/APIHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AnalyticsHelper/events.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AnalyticsHelper/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AnalyticsHelper/specs/events.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AnalyticsHelper/specs/helper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/AudioMessageHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/AudioNotificationStore.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/DashboardAudioNotificationHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/WindowVisibilityHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/faviconHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/specs/AudioMessageHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/specs/AudioNotificationStore.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/AudioAlerts/specs/WindowVisibilityHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/CacheHelper/DataManager.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/CacheHelper/version.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/DOMHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/ReconnectService.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/Timer.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/URLHelper.js","messages":[],"suppressedMessages":[{"ruleId":"no-useless-escape","severity":2,"message":"Unnecessary escape character: \\+.","line":64,"column":44,"nodeType":"Literal","messageId":"unnecessaryEscape","endLine":64,"endColumn":45,"suggestions":[{"messageId":"removeEscape","fix":{"range":[2015,2016],"text":""},"desc":"Remove the `\\`. This maintains the current functionality."},{"messageId":"escapeBackslash","fix":{"range":[2015,2015],"text":"\\"},"desc":"Replace the `\\` with `\\\\` to include the actual backslash character."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-useless-escape","severity":2,"message":"Unnecessary escape character: \\+.","line":64,"column":97,"nodeType":"Literal","messageId":"unnecessaryEscape","endLine":64,"endColumn":98,"suggestions":[{"messageId":"removeEscape","fix":{"range":[2068,2069],"text":""},"desc":"Remove the `\\`. This maintains the current functionality."},{"messageId":"escapeBackslash","fix":{"range":[2068,2068],"text":"\\"},"desc":"Replace the `\\` with `\\\\` to include the actual backslash character."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/actionCable.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onReconnect'.","line":41,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":41,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onDisconnected'.","line":46,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":46,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onLogout'.","line":94,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":94,"endColumn":14,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onReload'.","line":110,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":110,"endColumn":14,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'fetchConversationStats'.","line":165,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":165,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/actionQueryGenerator.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/agentHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/auditlogHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/automationHelper.js","messages":[],"suppressedMessages":[{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":216,"column":3,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":216,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":218,"column":3,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":218,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/commandbar/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/commandbar/events.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/commandbar/icons.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/commons.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/conversationHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/customViewsHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/downloadHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/editorHelper.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":108,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":108,"endColumn":17,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"warn"},"fix":{"range":[3844,3860],"text":""},"desc":"Remove the console.warn()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/emailQuoteExtractor.js","messages":[],"suppressedMessages":[{"ruleId":"no-restricted-syntax","severity":2,"message":"iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.","line":63,"column":5,"nodeType":"ForOfStatement","messageId":"restrictedSyntax","endLine":67,"endColumn":6,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/featureHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/filterQueryGenerator.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/flag.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/inbox.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/labelColor.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/permissionsHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/portalHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/preChat.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/pushHelper.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":22,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":22,"endColumn":18,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"log"},"fix":{"range":[684,743],"text":""},"desc":"Remove the console.log()."}],"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":73,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":73,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[2062,2125],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":81,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":81,"endColumn":17,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"warn"},"fix":{"range":[2351,2397],"text":""},"desc":"Remove the console.warn()."}],"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/quotedEmailHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/routeHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/scriptHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/snoozeHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/CacheHelper/DataManger.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/DOMHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/ReconnectService.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/Timer.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/URLHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/actionCable.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/actionQueryGenerator.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/agentHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/auditlogHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/automationHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/commons.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/conversationHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/customViewsHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/downloadHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/editorContentHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/editorHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/emailQuoteExtractor.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/filterQueryGenerator.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/fixtures/agentFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/fixtures/automationFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/fixtures/conversationFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/flag.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/inbox.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/inboxFixture.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/macrosFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/macrosHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/permissionsHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/portalHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/preChat.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/quotedEmailHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/routeHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/snoozeHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/templateHelper.spec.js","messages":[],"suppressedMessages":[{"ruleId":"no-template-curly-in-string","severity":2,"message":"Unexpected template string expression.","line":293,"column":9,"nodeType":"Literal","messageId":"unexpectedTemplateExpression","endLine":293,"endColumn":76,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/themeHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/uploadHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/specs/validations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/states.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/templateHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/themeHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/uploadHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/validations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/helper/voice.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/am/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ar/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/az/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/bg/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ca/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/cs/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/da/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/de/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/el/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/en/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/es/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/fa/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/fi/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/fr/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/he/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/hi/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/hr/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/hu/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/hy/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/id/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/is/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/it/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ja/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ka/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ko/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/lt/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/lv/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ml/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ms/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ne/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/nl/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/no/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/pl/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/pt/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/pt_BR/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ro/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ru/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/sh/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/sk/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/sl/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/sq/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/sr/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/sv/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ta/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/th/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/tl/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/tr/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/uk/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ur/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/ur_IN/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/vi/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/zh/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/zh_CN/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/i18n/locale/zh_TW/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/mixins/fileUploadMixin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/mixins/specs/fileUploadMixin.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/contact/ContactMergeModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/contact/components/ContactDropdownItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '---' is used","line":47,"column":48,"nodeType":null,"endLine":47,"endColumn":53,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1156],"text":"<i18n>\n{\n \"en\": {\n \"---\": \"---\"\n }\n}\n</i18n>\n\n<script setup>\nimport Avatar from 'next/avatar/Avatar.vue';\n\ndefineProps({\n name: {\n type: String,\n default: '',\n },\n thumbnail: {\n type: String,\n default: '',\n },\n email: {\n type: String,\n default: '',\n },\n phoneNumber: {\n type: String,\n default: '',\n },\n identifier: {\n type: [String, Number],\n required: true,\n },\n});\n</script>\n\n<template>\n <div class=\"option-item--user\">\n <Avatar :src=\"thumbnail\" :size=\"28\" :name=\"name\" rounded-full />\n <div class=\"option__user-data\">\n <h5 class=\"option__title\">\n {{ name }}\n <span v-if=\"identifier\" class=\"user-identifier\">\n {{ $t('MERGE_CONTACTS.DROPDOWN_ITEM.ID', { identifier }) }}\n </span>\n </h5>\n <p class=\"option__body\">\n <span v-if=\"email\" class=\"email-icon-wrap\">\n <fluent-icon class=\"merge-contact--icon\" icon=\"mail\" size=\"12\" />\n {{ email }}\n </span>\n <span v-if=\"phoneNumber\" class=\"phone-icon-wrap\">\n <fluent-icon class=\"merge-contact--icon\" icon=\"call\" size=\"12\" />\n {{ phoneNumber }}\n </span>\n <span v-if=\"!phoneNumber && !email\">{{ $t('---')"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport Avatar from 'next/avatar/Avatar.vue';\n\ndefineProps({\n name: {\n type: String,\n default: '',\n },\n thumbnail: {\n type: String,\n default: '',\n },\n email: {\n type: String,\n default: '',\n },\n phoneNumber: {\n type: String,\n default: '',\n },\n identifier: {\n type: [String, Number],\n required: true,\n },\n});\n</script>\n\n<template>\n <div class=\"option-item--user\">\n <Avatar :src=\"thumbnail\" :size=\"28\" :name=\"name\" rounded-full />\n <div class=\"option__user-data\">\n <h5 class=\"option__title\">\n {{ name }}\n <span v-if=\"identifier\" class=\"user-identifier\">\n {{ $t('MERGE_CONTACTS.DROPDOWN_ITEM.ID', { identifier }) }}\n </span>\n </h5>\n <p class=\"option__body\">\n <span v-if=\"email\" class=\"email-icon-wrap\">\n <fluent-icon class=\"merge-contact--icon\" icon=\"mail\" size=\"12\" />\n {{ email }}\n </span>\n <span v-if=\"phoneNumber\" class=\"phone-icon-wrap\">\n <fluent-icon class=\"merge-contact--icon\" icon=\"call\" size=\"12\" />\n {{ phoneNumber }}\n </span>\n <span v-if=\"!phoneNumber && !email\">{{ '---' }}</span>\n </p>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.option-item--user {\n @apply flex items-center;\n}\n.user-identifier {\n @apply text-xs ml-0.5 text-n-slate-12;\n}\n.option__user-data {\n @apply flex flex-col flex-grow ml-2 mr-2;\n}\n.option__body,\n.option__title {\n @apply flex items-center justify-start leading-[1.2] text-sm;\n}\n.option__body .icon {\n @apply relative top-px mr-0.5 rtl:mr-0 rtl:ml-0.5;\n}\n.option__title {\n @apply text-n-slate-12 font-medium mb-0.5;\n}\n.option__body {\n @apply text-xs text-n-slate-12 mt-1;\n}\n\n.option__user-data .option__body {\n > .phone-icon-wrap,\n > .email-icon-wrap {\n @apply w-auto flex items-center;\n }\n}\n\n.merge-contact--icon {\n @apply -mb-0.5 mr-0.5;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/contact/components/MergeContact.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/contact/components/MergeContactSummary.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '❌' is used","line":27,"column":41,"nodeType":null,"endLine":27,"endColumn":42,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,596],"text":"<i18n>\n{\n \"en\": {\n \"❌\": \"❌\"\n }\n}\n</i18n>\n\n<script>\nexport default {\n props: {\n primaryContactName: {\n type: String,\n default: '',\n },\n parentContactName: {\n type: String,\n default: '',\n },\n },\n};\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <div\n v-if=\"parentContactName\"\n class=\"my-4 relative p-2.5 border rounded-[4px] text-n-slate-12 border-n-weak bg-n-background\"\n >\n <h5 class=\"text-base font-medium text-n-slate-12\">\n {{ $t('MERGE_CONTACTS.SUMMARY.TITLE') }}\n </h5>\n <ul class=\"ml-0 list-none\">\n <li>\n <span class=\"inline-block mr-1\">{{$t('❌')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '✅' is used","line":37,"column":41,"nodeType":null,"endLine":37,"endColumn":42,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,841],"text":"<i18n>\n{\n \"en\": {\n \"✅\": \"✅\"\n }\n}\n</i18n>\n\n<script>\nexport default {\n props: {\n primaryContactName: {\n type: String,\n default: '',\n },\n parentContactName: {\n type: String,\n default: '',\n },\n },\n};\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <div\n v-if=\"parentContactName\"\n class=\"my-4 relative p-2.5 border rounded-[4px] text-n-slate-12 border-n-weak bg-n-background\"\n >\n <h5 class=\"text-base font-medium text-n-slate-12\">\n {{ $t('MERGE_CONTACTS.SUMMARY.TITLE') }}\n </h5>\n <ul class=\"ml-0 list-none\">\n <li>\n <span class=\"inline-block mr-1\">❌</span>\n <span\n v-dompurify-html=\"\n $t('MERGE_CONTACTS.SUMMARY.DELETE_WARNING', {\n primaryContactName,\n })\n \"\n />\n </li>\n <li>\n <span class=\"inline-block mr-1\">{{$t('✅')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nexport default {\n props: {\n primaryContactName: {\n type: String,\n default: '',\n },\n parentContactName: {\n type: String,\n default: '',\n },\n },\n};\n</script>\n\n<!-- eslint-disable-next-line vue/no-root-v-if -->\n<template>\n <div\n v-if=\"parentContactName\"\n class=\"my-4 relative p-2.5 border rounded-[4px] text-n-slate-12 border-n-weak bg-n-background\"\n >\n <h5 class=\"text-base font-medium text-n-slate-12\">\n {{ $t('MERGE_CONTACTS.SUMMARY.TITLE') }}\n </h5>\n <ul class=\"ml-0 list-none\">\n <li>\n <span class=\"inline-block mr-1\">❌</span>\n <span\n v-dompurify-html=\"\n $t('MERGE_CONTACTS.SUMMARY.DELETE_WARNING', {\n primaryContactName,\n })\n \"\n />\n </li>\n <li>\n <span class=\"inline-block mr-1\">✅</span>\n <span\n v-dompurify-html=\"\n $t('MERGE_CONTACTS.SUMMARY.ATTRIBUTE_WARNING', {\n primaryContactName,\n parentContactName,\n })\n \"\n />\n </li>\n </ul>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/conversations/components/MessageContextMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/MessageContent.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/ReadMore.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultArticleItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultArticlesList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultContactItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '•' is used","line":61,"column":52,"nodeType":null,"endLine":61,"endColumn":53,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1322],"text":"<i18n>\n{\n \"en\": {\n \"•\": \"•\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { frontendURL } from 'dashboard/helper/URLHelper';\n\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\n\nconst props = defineProps({\n id: {\n type: [String, Number],\n default: 0,\n },\n email: {\n type: String,\n default: '',\n },\n phone: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n thumbnail: {\n type: String,\n default: '',\n },\n accountId: {\n type: [String, Number],\n default: 0,\n },\n});\n\nconst navigateTo = computed(() => {\n return frontendURL(`accounts/${props.accountId}/contacts/${props.id}`);\n});\n</script>\n\n<template>\n <router-link\n :to=\"navigateTo\"\n class=\"flex items-start p-2 rounded-xl cursor-pointer hover:bg-n-slate-2\"\n >\n <Avatar\n :name=\"name\"\n :src=\"thumbnail\"\n :size=\"24\"\n rounded-full\n class=\"mt-0.5\"\n />\n <div class=\"ml-2 rtl:mr-2 min-w-0 rtl:ml-0\">\n <h5 class=\"text-sm name truncate min-w-0 text-n-slate-12\">\n {{ name }}\n </h5>\n <p\n class=\"grid items-center m-0 gap-1 text-sm grid-cols-[minmax(0,1fr)_auto_auto]\"\n >\n <span v-if=\"email\" class=\"truncate text-n-slate-12\" :title=\"email\">\n {{ email }}\n </span>\n <span v-if=\"phone\" class=\"text-n-slate-10\">{{$t('•')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { frontendURL } from 'dashboard/helper/URLHelper';\n\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\n\nconst props = defineProps({\n id: {\n type: [String, Number],\n default: 0,\n },\n email: {\n type: String,\n default: '',\n },\n phone: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n thumbnail: {\n type: String,\n default: '',\n },\n accountId: {\n type: [String, Number],\n default: 0,\n },\n});\n\nconst navigateTo = computed(() => {\n return frontendURL(`accounts/${props.accountId}/contacts/${props.id}`);\n});\n</script>\n\n<template>\n <router-link\n :to=\"navigateTo\"\n class=\"flex items-start p-2 rounded-xl cursor-pointer hover:bg-n-slate-2\"\n >\n <Avatar\n :name=\"name\"\n :src=\"thumbnail\"\n :size=\"24\"\n rounded-full\n class=\"mt-0.5\"\n />\n <div class=\"ml-2 rtl:mr-2 min-w-0 rtl:ml-0\">\n <h5 class=\"text-sm name truncate min-w-0 text-n-slate-12\">\n {{ name }}\n </h5>\n <p\n class=\"grid items-center m-0 gap-1 text-sm grid-cols-[minmax(0,1fr)_auto_auto]\"\n >\n <span v-if=\"email\" class=\"truncate text-n-slate-12\" :title=\"email\">\n {{ email }}\n </span>\n <span v-if=\"phone\" class=\"text-n-slate-10\">•</span>\n <span v-if=\"phone\" class=\"text-n-slate-12\">{{ phone }}</span>\n </p>\n </div>\n </router-link>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultContactsList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultConversationItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'item.label' dynamic key is used'","line":124,"column":16,"nodeType":"CallExpression","endLine":124,"endColumn":30},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":124,"column":33,"nodeType":null,"endLine":125,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2980],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\n\nimport { frontendURL } from 'dashboard/helper/URLHelper.js';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\nimport InboxName from 'dashboard/components/widgets/InboxName.vue';\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n default: 0,\n },\n inbox: {\n type: Object,\n default: () => ({}),\n },\n name: {\n type: String,\n default: '',\n },\n email: {\n type: String,\n default: '',\n },\n accountId: {\n type: [String, Number],\n default: '',\n },\n createdAt: {\n type: [String, Date, Number],\n default: '',\n },\n messageId: {\n type: Number,\n default: 0,\n },\n emailSubject: {\n type: String,\n default: '',\n },\n});\n\nconst navigateTo = computed(() => {\n const params = {};\n if (props.messageId) {\n params.messageId = props.messageId;\n }\n return frontendURL(\n `accounts/${props.accountId}/conversations/${props.id}`,\n params\n );\n});\n\nconst createdAtTime = dynamicTime(props.createdAt);\n\nconst infoItems = computed(() => [\n {\n label: 'SEARCH.FROM',\n value: props.name,\n show: !!props.name,\n },\n {\n label: 'SEARCH.EMAIL',\n value: props.email,\n show: !!props.email,\n },\n {\n label: 'SEARCH.EMAIL_SUBJECT',\n value: props.emailSubject,\n show: !!props.emailSubject,\n },\n]);\n\nconst visibleInfoItems = computed(() =>\n infoItems.value.filter(item => item.show)\n);\n</script>\n\n<template>\n <router-link\n :to=\"navigateTo\"\n class=\"flex p-2 rounded-xl cursor-pointer hover:bg-n-slate-2\"\n >\n <Avatar\n name=\"chats\"\n :size=\"24\"\n icon-name=\"i-lucide-messages-square\"\n class=\"[&>span]:rounded\"\n />\n <div class=\"flex-grow min-w-0 ml-2\">\n <div class=\"flex items-center min-w-0 justify-between gap-1 mb-1\">\n <div class=\"flex\">\n <woot-label\n class=\"!bg-n-slate-3 dark:!bg-n-solid-3 !border-n-weak dark:!border-n-strong m-0\"\n :title=\"`#${id}`\"\n :show-close=\"false\"\n small\n />\n <div\n class=\"flex items-center justify-center h-5 ml-1 rounded bg-n-slate-3 dark:bg-n-solid-3 w-fit rtl:ml-0 rtl:mr-1\"\n >\n <InboxName\n :inbox=\"inbox\"\n class=\"mx-2 bg-n-slate-3 dark:bg-n-solid-3 text-n-slate-11 dark:text-n-slate-11\"\n />\n </div>\n </div>\n <span\n class=\"text-xs font-normal min-w-0 truncate text-n-slate-11 dark:text-n-slate-11\"\n >\n {{ createdAtTime }}\n </span>\n </div>\n <div class=\"flex flex-wrap gap-x-2 gap-y-1.5\">\n <h5\n v-for=\"item in visibleInfoItems\"\n :key=\"item.label\"\n class=\"m-0 text-sm min-w-0 text-n-slate-12 dark:text-n-slate-12 truncate\"\n >\n <span\n class=\"text-xs font-normal text-n-slate-11 dark:text-n-slate-11\"\n >\n {{ $t(item.label) }}{{$t(`:\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\n\nimport { frontendURL } from 'dashboard/helper/URLHelper.js';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\nimport InboxName from 'dashboard/components/widgets/InboxName.vue';\nimport Avatar from 'dashboard/components-next/avatar/Avatar.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n default: 0,\n },\n inbox: {\n type: Object,\n default: () => ({}),\n },\n name: {\n type: String,\n default: '',\n },\n email: {\n type: String,\n default: '',\n },\n accountId: {\n type: [String, Number],\n default: '',\n },\n createdAt: {\n type: [String, Date, Number],\n default: '',\n },\n messageId: {\n type: Number,\n default: 0,\n },\n emailSubject: {\n type: String,\n default: '',\n },\n});\n\nconst navigateTo = computed(() => {\n const params = {};\n if (props.messageId) {\n params.messageId = props.messageId;\n }\n return frontendURL(\n `accounts/${props.accountId}/conversations/${props.id}`,\n params\n );\n});\n\nconst createdAtTime = dynamicTime(props.createdAt);\n\nconst infoItems = computed(() => [\n {\n label: 'SEARCH.FROM',\n value: props.name,\n show: !!props.name,\n },\n {\n label: 'SEARCH.EMAIL',\n value: props.email,\n show: !!props.email,\n },\n {\n label: 'SEARCH.EMAIL_SUBJECT',\n value: props.emailSubject,\n show: !!props.emailSubject,\n },\n]);\n\nconst visibleInfoItems = computed(() =>\n infoItems.value.filter(item => item.show)\n);\n</script>\n\n<template>\n <router-link\n :to=\"navigateTo\"\n class=\"flex p-2 rounded-xl cursor-pointer hover:bg-n-slate-2\"\n >\n <Avatar\n name=\"chats\"\n :size=\"24\"\n icon-name=\"i-lucide-messages-square\"\n class=\"[&>span]:rounded\"\n />\n <div class=\"flex-grow min-w-0 ml-2\">\n <div class=\"flex items-center min-w-0 justify-between gap-1 mb-1\">\n <div class=\"flex\">\n <woot-label\n class=\"!bg-n-slate-3 dark:!bg-n-solid-3 !border-n-weak dark:!border-n-strong m-0\"\n :title=\"`#${id}`\"\n :show-close=\"false\"\n small\n />\n <div\n class=\"flex items-center justify-center h-5 ml-1 rounded bg-n-slate-3 dark:bg-n-solid-3 w-fit rtl:ml-0 rtl:mr-1\"\n >\n <InboxName\n :inbox=\"inbox\"\n class=\"mx-2 bg-n-slate-3 dark:bg-n-solid-3 text-n-slate-11 dark:text-n-slate-11\"\n />\n </div>\n </div>\n <span\n class=\"text-xs font-normal min-w-0 truncate text-n-slate-11 dark:text-n-slate-11\"\n >\n {{ createdAtTime }}\n </span>\n </div>\n <div class=\"flex flex-wrap gap-x-2 gap-y-1.5\">\n <h5\n v-for=\"item in visibleInfoItems\"\n :key=\"item.label\"\n class=\"m-0 text-sm min-w-0 text-n-slate-12 dark:text-n-slate-12 truncate\"\n >\n <span\n class=\"text-xs font-normal text-n-slate-11 dark:text-n-slate-11\"\n >\n {{ $t(item.label) }}:\n </span>\n {{ item.value }}\n </h5>\n </div>\n <slot />\n </div>\n </router-link>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultConversationsList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultMessagesList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchResultSection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchTabs.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/components/SearchView.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`SEARCH.TABS.${key.toUpperCase()}`' dynamic key is used'","line":118,"column":13,"nodeType":"CallExpression","endLine":118,"endColumn":50}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, onMounted, onUnmounted } from 'vue';\nimport { useMapGetter, useStore } from 'dashboard/composables/store.js';\nimport { useRouter, useRoute } from 'vue-router';\nimport { useTrack } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport {\n ROLES,\n CONVERSATION_PERMISSIONS,\n CONTACT_PERMISSIONS,\n PORTAL_PERMISSIONS,\n} from 'dashboard/constants/permissions.js';\nimport { usePolicy } from 'dashboard/composables/usePolicy';\nimport { FEATURE_FLAGS } from 'dashboard/featureFlags';\nimport { CONVERSATION_EVENTS } from '../../../helper/AnalyticsHelper/events';\n\nimport Policy from 'dashboard/components/policy.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\nimport SearchHeader from './SearchHeader.vue';\nimport SearchTabs from './SearchTabs.vue';\nimport SearchResultConversationsList from './SearchResultConversationsList.vue';\nimport SearchResultMessagesList from './SearchResultMessagesList.vue';\nimport SearchResultContactsList from './SearchResultContactsList.vue';\nimport SearchResultArticlesList from './SearchResultArticlesList.vue';\n\nconst router = useRouter();\nconst route = useRoute();\nconst store = useStore();\nconst { t } = useI18n();\n\nconst PER_PAGE = 15; // Results per page\nconst selectedTab = ref(route.params.tab || 'all');\nconst query = ref(route.query.q || '');\nconst pages = ref({\n contacts: 1,\n conversations: 1,\n messages: 1,\n articles: 1,\n});\n\nconst contactRecords = useMapGetter('conversationSearch/getContactRecords');\nconst conversationRecords = useMapGetter(\n 'conversationSearch/getConversationRecords'\n);\nconst messageRecords = useMapGetter('conversationSearch/getMessageRecords');\nconst articleRecords = useMapGetter('conversationSearch/getArticleRecords');\nconst uiFlags = useMapGetter('conversationSearch/getUIFlags');\n\nconst addTypeToRecords = (records, type) =>\n records.value.map(item => ({ ...item, type }));\n\nconst mappedContacts = computed(() =>\n addTypeToRecords(contactRecords, 'contact')\n);\nconst mappedConversations = computed(() =>\n addTypeToRecords(conversationRecords, 'conversation')\n);\nconst mappedMessages = computed(() =>\n addTypeToRecords(messageRecords, 'message')\n);\nconst mappedArticles = computed(() =>\n addTypeToRecords(articleRecords, 'article')\n);\n\nconst isSelectedTabAll = computed(() => selectedTab.value === 'all');\n\nconst sliceRecordsIfAllTab = items =>\n isSelectedTabAll.value ? items.value.slice(0, 5) : items.value;\n\nconst contacts = computed(() => sliceRecordsIfAllTab(mappedContacts));\nconst conversations = computed(() => sliceRecordsIfAllTab(mappedConversations));\nconst messages = computed(() => sliceRecordsIfAllTab(mappedMessages));\nconst articles = computed(() => sliceRecordsIfAllTab(mappedArticles));\n\nconst filterByTab = tab =>\n computed(() => selectedTab.value === tab || isSelectedTabAll.value);\n\nconst filterContacts = filterByTab('contacts');\nconst filterConversations = filterByTab('conversations');\nconst filterMessages = filterByTab('messages');\nconst filterArticles = filterByTab('articles');\n\nconst { shouldShow, isFeatureFlagEnabled } = usePolicy();\n\nconst TABS_CONFIG = {\n all: {\n permissions: [\n CONTACT_PERMISSIONS,\n ...ROLES,\n ...CONVERSATION_PERMISSIONS,\n PORTAL_PERMISSIONS,\n ],\n count: () => null, // No count for all tab\n },\n contacts: {\n permissions: [...ROLES, CONTACT_PERMISSIONS],\n count: () => mappedContacts.value.length,\n },\n conversations: {\n permissions: [...ROLES, ...CONVERSATION_PERMISSIONS],\n count: () => mappedConversations.value.length,\n },\n messages: {\n permissions: [...ROLES, ...CONVERSATION_PERMISSIONS],\n count: () => mappedMessages.value.length,\n },\n articles: {\n permissions: [...ROLES, PORTAL_PERMISSIONS],\n featureFlag: FEATURE_FLAGS.HELP_CENTER,\n count: () => mappedArticles.value.length,\n },\n};\n\nconst tabs = computed(() => {\n return Object.entries(TABS_CONFIG)\n .map(([key, config]) => ({\n key,\n name: t(`SEARCH.TABS.${key.toUpperCase()}`),\n count: config.count(),\n showBadge: key !== 'all',\n permissions: config.permissions,\n featureFlag: config.featureFlag,\n }))\n .filter(config => {\n // why the double check, glad you asked.\n // Some features are marked as premium features, that means\n // the feature will be visible, but a Paywall will be shown instead\n // this works for pages and routes, but fails for UI elements like search here\n // so we explicitly check if the feature is enabled\n return (\n shouldShow(config.featureFlag, config.permissions, null) &&\n isFeatureFlagEnabled(config.featureFlag)\n );\n });\n});\n\nconst totalSearchResultsCount = computed(() => {\n const permissionCounts = [\n {\n permissions: [...ROLES, CONTACT_PERMISSIONS],\n count: () => contacts.value.length,\n },\n {\n permissions: [...ROLES, ...CONVERSATION_PERMISSIONS],\n count: () => conversations.value.length + messages.value.length,\n },\n {\n permissions: [...ROLES, PORTAL_PERMISSIONS],\n featureFlag: FEATURE_FLAGS.HELP_CENTER,\n count: () => articles.value.length,\n },\n ];\n\n return permissionCounts\n .filter(config => {\n // why the double check, glad you asked.\n // Some features are marked as premium features, that means\n // the feature will be visible, but a Paywall will be shown instead\n // this works for pages and routes, but fails for UI elements like search here\n // so we explicitly check if the feature is enabled\n return (\n shouldShow(config.featureFlag, config.permissions, null) &&\n isFeatureFlagEnabled(config.featureFlag)\n );\n })\n .map(config => {\n return config.count();\n })\n .reduce((sum, count) => sum + count, 0);\n});\n\nconst activeTabIndex = computed(() => {\n const index = tabs.value.findIndex(tab => tab.key === selectedTab.value);\n return index >= 0 ? index : 0;\n});\n\nconst isFetchingAny = computed(() => {\n const { contact, message, conversation, article, isFetching } = uiFlags.value;\n return (\n isFetching ||\n contact.isFetching ||\n message.isFetching ||\n conversation.isFetching ||\n article.isFetching\n );\n});\n\nconst showEmptySearchResults = computed(\n () =>\n totalSearchResultsCount.value === 0 &&\n uiFlags.value.isSearchCompleted &&\n isSelectedTabAll.value &&\n !isFetchingAny.value &&\n query.value\n);\n\nconst showResultsSection = computed(\n () =>\n (uiFlags.value.isSearchCompleted && totalSearchResultsCount.value !== 0) ||\n isFetchingAny.value ||\n (!isSelectedTabAll.value && query.value && !isFetchingAny.value)\n);\n\nconst showLoadMore = computed(() => {\n if (!query.value || isFetchingAny.value || selectedTab.value === 'all')\n return false;\n\n const records = {\n contacts: mappedContacts.value,\n conversations: mappedConversations.value,\n messages: mappedMessages.value,\n articles: mappedArticles.value,\n }[selectedTab.value];\n\n return (\n records?.length > 0 &&\n records.length === pages.value[selectedTab.value] * PER_PAGE\n );\n});\n\nconst showViewMore = computed(() => ({\n // Hide view more button if the number of records is less than 5\n contacts: mappedContacts.value?.length > 5 && isSelectedTabAll.value,\n conversations:\n mappedConversations.value?.length > 5 && isSelectedTabAll.value,\n messages: mappedMessages.value?.length > 5 && isSelectedTabAll.value,\n articles: mappedArticles.value?.length > 5 && isSelectedTabAll.value,\n}));\n\nconst clearSearchResult = () => {\n pages.value = { contacts: 1, conversations: 1, messages: 1, articles: 1 };\n store.dispatch('conversationSearch/clearSearchResults');\n};\n\nconst updateURL = () => {\n // Update route with tab as URL parameter and query as query parameter\n const params = { accountId: route.params.accountId };\n const queryParams = {};\n\n // Only add tab param if not 'all'\n if (selectedTab.value !== 'all') {\n params.tab = selectedTab.value;\n }\n\n if (query.value?.trim()) {\n queryParams.q = query.value.trim();\n }\n\n router.replace({\n name: 'search',\n params,\n query: queryParams,\n });\n};\n\nconst onSearch = q => {\n query.value = q;\n clearSearchResult();\n updateURL();\n if (!q) return;\n useTrack(CONVERSATION_EVENTS.SEARCH_CONVERSATION);\n store.dispatch('conversationSearch/fullSearch', { q, page: 1 });\n};\n\nconst onBack = () => {\n if (window.history.length > 2) {\n router.go(-1);\n } else {\n router.push({ name: 'home' });\n }\n clearSearchResult();\n};\n\nconst loadMore = () => {\n const SEARCH_ACTIONS = {\n contacts: 'conversationSearch/contactSearch',\n conversations: 'conversationSearch/conversationSearch',\n messages: 'conversationSearch/messageSearch',\n articles: 'conversationSearch/articleSearch',\n };\n\n if (uiFlags.value.isFetching || selectedTab.value === 'all') return;\n const tab = selectedTab.value;\n pages.value[tab] += 1;\n store.dispatch(SEARCH_ACTIONS[tab], {\n q: query.value,\n page: pages.value[tab],\n });\n};\n\nconst onTabChange = tab => {\n selectedTab.value = tab;\n updateURL();\n};\n\nonMounted(() => {\n store.dispatch('conversationSearch/clearSearchResults');\n\n // Auto-execute search if query parameter exists\n if (route.query.q) {\n onSearch(route.query.q);\n }\n});\n\nonUnmounted(() => {\n query.value = '';\n store.dispatch('conversationSearch/clearSearchResults');\n});\n</script>\n\n<template>\n <div class=\"flex flex-col w-full h-full bg-n-background\">\n <div class=\"flex w-full p-4\">\n <NextButton\n :label=\"t('GENERAL_SETTINGS.BACK')\"\n icon=\"i-lucide-chevron-left\"\n faded\n primary\n sm\n @click=\"onBack\"\n />\n </div>\n <section class=\"flex flex-col flex-grow w-full h-full overflow-hidden\">\n <div class=\"w-full max-w-4xl mx-auto\">\n <div class=\"flex flex-col w-full px-4\">\n <SearchHeader :initial-query=\"query\" @search=\"onSearch\" />\n <SearchTabs\n v-if=\"query\"\n :tabs=\"tabs\"\n :selected-tab=\"activeTabIndex\"\n @tab-change=\"onTabChange\"\n />\n </div>\n </div>\n <div class=\"flex-grow w-full h-full overflow-y-auto\">\n <div class=\"w-full max-w-4xl mx-auto px-4 pb-6\">\n <div v-if=\"showResultsSection\">\n <Policy\n :permissions=\"[...ROLES, CONTACT_PERMISSIONS]\"\n class=\"flex flex-col justify-center\"\n >\n <SearchResultContactsList\n v-if=\"filterContacts\"\n :is-fetching=\"uiFlags.contact.isFetching\"\n :contacts=\"contacts\"\n :query=\"query\"\n :show-title=\"isSelectedTabAll\"\n />\n <NextButton\n v-if=\"showViewMore.contacts\"\n :label=\"t(`SEARCH.VIEW_MORE`)\"\n icon=\"i-lucide-eye\"\n slate\n sm\n outline\n @click=\"selectedTab = 'contacts'\"\n />\n </Policy>\n\n <Policy\n :permissions=\"[...ROLES, ...CONVERSATION_PERMISSIONS]\"\n class=\"flex flex-col justify-center\"\n >\n <SearchResultMessagesList\n v-if=\"filterMessages\"\n :is-fetching=\"uiFlags.message.isFetching\"\n :messages=\"messages\"\n :query=\"query\"\n :show-title=\"isSelectedTabAll\"\n />\n <NextButton\n v-if=\"showViewMore.messages\"\n :label=\"t(`SEARCH.VIEW_MORE`)\"\n icon=\"i-lucide-eye\"\n slate\n sm\n outline\n @click=\"selectedTab = 'messages'\"\n />\n </Policy>\n\n <Policy\n :permissions=\"[...ROLES, ...CONVERSATION_PERMISSIONS]\"\n class=\"flex flex-col justify-center\"\n >\n <SearchResultConversationsList\n v-if=\"filterConversations\"\n :is-fetching=\"uiFlags.conversation.isFetching\"\n :conversations=\"conversations\"\n :query=\"query\"\n :show-title=\"isSelectedTabAll\"\n />\n <NextButton\n v-if=\"showViewMore.conversations\"\n :label=\"t(`SEARCH.VIEW_MORE`)\"\n icon=\"i-lucide-eye\"\n slate\n sm\n outline\n @click=\"selectedTab = 'conversations'\"\n />\n </Policy>\n\n <Policy\n v-if=\"isFeatureFlagEnabled(FEATURE_FLAGS.HELP_CENTER)\"\n :permissions=\"[...ROLES, PORTAL_PERMISSIONS]\"\n :feature-flag=\"FEATURE_FLAGS.HELP_CENTER\"\n class=\"flex flex-col justify-center\"\n >\n <SearchResultArticlesList\n v-if=\"filterArticles\"\n :is-fetching=\"uiFlags.article.isFetching\"\n :articles=\"articles\"\n :query=\"query\"\n :show-title=\"isSelectedTabAll\"\n />\n <NextButton\n v-if=\"showViewMore.articles\"\n :label=\"t(`SEARCH.VIEW_MORE`)\"\n icon=\"i-lucide-eye\"\n slate\n sm\n outline\n @click=\"selectedTab = 'articles'\"\n />\n </Policy>\n\n <div v-if=\"showLoadMore\" class=\"flex justify-center mt-4 mb-6\">\n <NextButton\n v-if=\"!isSelectedTabAll\"\n :label=\"t(`SEARCH.LOAD_MORE`)\"\n icon=\"i-lucide-cloud-download\"\n slate\n sm\n faded\n @click=\"loadMore\"\n />\n </div>\n </div>\n <div\n v-else-if=\"showEmptySearchResults\"\n class=\"flex flex-col items-center justify-center px-4 py-6 mt-8 rounded-md\"\n >\n <fluent-icon icon=\"info\" size=\"16px\" class=\"text-n-slate-11\" />\n <p class=\"m-2 text-center text-n-slate-11\">\n {{ t('SEARCH.EMPTY_STATE_FULL', { query }) }}\n </p>\n </div>\n <div\n v-else-if=\"!query\"\n class=\"flex flex-col items-center justify-center px-4 py-6 mt-8 text-center rounded-md\"\n >\n <p class=\"text-center margin-bottom-0\">\n <fluent-icon icon=\"search\" size=\"24px\" class=\"text-n-slate-11\" />\n </p>\n <p class=\"m-2 text-center text-n-slate-11\">\n {{ t('SEARCH.EMPTY_STATE_DEFAULT') }}\n </p>\n </div>\n </div>\n </div>\n </section>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/search/search.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/widget-preview/components/Widget.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/widget-preview/components/WidgetBody.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/widget-preview/components/WidgetFooter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/modules/widget-preview/components/WidgetHead.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/Dashboard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/campaigns/campaigns.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/campaigns/pages/CampaignsPageRouteView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/campaigns/pages/LiveChatCampaignsPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/campaigns/pages/SMSCampaignsPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/campaigns/pages/WhatsAppCampaignsPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assets/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/guardrails/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/guidelines/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/inboxes/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/playground/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/scenarios/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/settings/Settings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/assistants/tools/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/brands/BrandModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/brands/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/captain.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/configurations/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/documents/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/extras/ExtraModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/extras/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/pages/AssistantsIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/pages/CaptainPageRouteView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/pages/CaptainToolsPage.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Nenhuma caixa de entrada disponível. Crie uma caixa para configurar\n ferramentas.\n ' is used","line":36,"column":12,"nodeType":null,"endLine":39,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1342],"text":"<i18n>\n{\n \"en\": {\n \"\\n Nenhuma caixa de entrada disponível. Crie uma caixa para configurar\\n ferramentas.\\n \": \"\\n Nenhuma caixa de entrada disponível. Crie uma caixa para configurar\\n ferramentas.\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\n\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport JasmineToolsTab from 'dashboard/routes/dashboard/jasmine/components/JasmineToolsTab.vue';\n\nconst getters = useStoreGetters();\n\n// Get all inboxes for the account\nconst allInboxes = computed(() => getters['inboxes/getInboxes'].value || []);\n\n// Use the first available inbox ID (since tools are account-wide, not inbox-specific)\nconst inboxId = computed(() => {\n if (allInboxes.value.length > 0) {\n return allInboxes.value[0].id;\n }\n return null;\n});\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Ferramentas Integradas\"\n description=\"Configure as credenciais (ID e Token) para as ferramentas que o Capitão pode utilizar durante os atendimentos.\"\n />\n </template>\n\n <template #body>\n <div v-if=\"!inboxId\" class=\"text-center py-12 text-n-slate-11\">\n <p>{{$t(`\n Nenhuma caixa de entrada disponível. Crie uma caixa para configurar\n ferramentas.\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\n\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport JasmineToolsTab from 'dashboard/routes/dashboard/jasmine/components/JasmineToolsTab.vue';\n\nconst getters = useStoreGetters();\n\n// Get all inboxes for the account\nconst allInboxes = computed(() => getters['inboxes/getInboxes'].value || []);\n\n// Use the first available inbox ID (since tools are account-wide, not inbox-specific)\nconst inboxId = computed(() => {\n if (allInboxes.value.length > 0) {\n return allInboxes.value[0].id;\n }\n return null;\n});\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Ferramentas Integradas\"\n description=\"Configure as credenciais (ID e Token) para as ferramentas que o Capitão pode utilizar durante os atendimentos.\"\n />\n </template>\n\n <template #body>\n <div v-if=\"!inboxId\" class=\"text-center py-12 text-n-slate-11\">\n <p>\n Nenhuma caixa de entrada disponível. Crie uma caixa para configurar\n ferramentas.\n </p>\n </div>\n <JasmineToolsTab v-else :inbox-id=\"inboxId\" />\n </template>\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/pricings/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/pricings/PricingModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/reminders/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Agendamento\n ' is used","line":52,"column":18,"nodeType":null,"endLine":54,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1610],"text":"<i18n>\n{\n \"en\": {\n \"\\n Agendamento\\n \": \"\\n Agendamento\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport SettingsLayout from '../../settings/SettingsLayout.vue';\nimport BaseSettingsHeader from '../../settings/components/BaseSettingsHeader.vue';\n\nconst reminders = ref([]);\nconst isLoading = ref(false);\nconst route = useRoute();\nconst accountId = route.params.accountId;\n\nconst fetchReminders = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/reminders`\n );\n reminders.value = data;\n } catch (error) {\n useAlert('Erro ao buscar lembretes');\n } finally {\n isLoading.value = false;\n }\n};\n\nonMounted(fetchReminders);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout>\n <BaseSettingsHeader\n title=\"Fila de Lembretes\"\n description=\"Veja as mensagens agendadas e enviadas pelo sistema.\"\n />\n\n <div class=\"flex flex-col gap-4 p-8\">\n <div v-if=\"isLoading\" class=\"text-center\">\n <span class=\"spinner\" />\n </div>\n\n <div v-else class=\"flex flex-col gap-4\">\n <div class=\"overflow-x-auto border rounded-md\">\n <table\n class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\"\n >\n <thead class=\"bg-gray-50 dark:bg-gray-800\">\n <tr>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >{{$t(`\n Agendamento\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Contato\n ' is used","line":57,"column":18,"nodeType":null,"endLine":59,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1801],"text":"<i18n>\n{\n \"en\": {\n \"\\n Contato\\n \": \"\\n Contato\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport SettingsLayout from '../../settings/SettingsLayout.vue';\nimport BaseSettingsHeader from '../../settings/components/BaseSettingsHeader.vue';\n\nconst reminders = ref([]);\nconst isLoading = ref(false);\nconst route = useRoute();\nconst accountId = route.params.accountId;\n\nconst fetchReminders = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/reminders`\n );\n reminders.value = data;\n } catch (error) {\n useAlert('Erro ao buscar lembretes');\n } finally {\n isLoading.value = false;\n }\n};\n\nonMounted(fetchReminders);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout>\n <BaseSettingsHeader\n title=\"Fila de Lembretes\"\n description=\"Veja as mensagens agendadas e enviadas pelo sistema.\"\n />\n\n <div class=\"flex flex-col gap-4 p-8\">\n <div v-if=\"isLoading\" class=\"text-center\">\n <span class=\"spinner\" />\n </div>\n\n <div v-else class=\"flex flex-col gap-4\">\n <div class=\"overflow-x-auto border rounded-md\">\n <table\n class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\"\n >\n <thead class=\"bg-gray-50 dark:bg-gray-800\">\n <tr>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Agendamento\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >{{$t(`\n Contato\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Status\n ' is used","line":62,"column":18,"nodeType":null,"endLine":64,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1991],"text":"<i18n>\n{\n \"en\": {\n \"\\n Status\\n \": \"\\n Status\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport SettingsLayout from '../../settings/SettingsLayout.vue';\nimport BaseSettingsHeader from '../../settings/components/BaseSettingsHeader.vue';\n\nconst reminders = ref([]);\nconst isLoading = ref(false);\nconst route = useRoute();\nconst accountId = route.params.accountId;\n\nconst fetchReminders = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/reminders`\n );\n reminders.value = data;\n } catch (error) {\n useAlert('Erro ao buscar lembretes');\n } finally {\n isLoading.value = false;\n }\n};\n\nonMounted(fetchReminders);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout>\n <BaseSettingsHeader\n title=\"Fila de Lembretes\"\n description=\"Veja as mensagens agendadas e enviadas pelo sistema.\"\n />\n\n <div class=\"flex flex-col gap-4 p-8\">\n <div v-if=\"isLoading\" class=\"text-center\">\n <span class=\"spinner\" />\n </div>\n\n <div v-else class=\"flex flex-col gap-4\">\n <div class=\"overflow-x-auto border rounded-md\">\n <table\n class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\"\n >\n <thead class=\"bg-gray-50 dark:bg-gray-800\">\n <tr>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Agendamento\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Contato\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >{{$t(`\n Status\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Mensagem\n ' is used","line":67,"column":18,"nodeType":null,"endLine":69,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2183],"text":"<i18n>\n{\n \"en\": {\n \"\\n Mensagem\\n \": \"\\n Mensagem\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport SettingsLayout from '../../settings/SettingsLayout.vue';\nimport BaseSettingsHeader from '../../settings/components/BaseSettingsHeader.vue';\n\nconst reminders = ref([]);\nconst isLoading = ref(false);\nconst route = useRoute();\nconst accountId = route.params.accountId;\n\nconst fetchReminders = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/reminders`\n );\n reminders.value = data;\n } catch (error) {\n useAlert('Erro ao buscar lembretes');\n } finally {\n isLoading.value = false;\n }\n};\n\nonMounted(fetchReminders);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout>\n <BaseSettingsHeader\n title=\"Fila de Lembretes\"\n description=\"Veja as mensagens agendadas e enviadas pelo sistema.\"\n />\n\n <div class=\"flex flex-col gap-4 p-8\">\n <div v-if=\"isLoading\" class=\"text-center\">\n <span class=\"spinner\" />\n </div>\n\n <div v-else class=\"flex flex-col gap-4\">\n <div class=\"overflow-x-auto border rounded-md\">\n <table\n class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\"\n >\n <thead class=\"bg-gray-50 dark:bg-gray-800\">\n <tr>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Agendamento\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Contato\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Status\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >{{$t(`\n Mensagem\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Nenhum lembrete na fila.\n ' is used","line":112,"column":10,"nodeType":null,"endLine":114,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3897],"text":"<i18n>\n{\n \"en\": {\n \"\\n Nenhum lembrete na fila.\\n \": \"\\n Nenhum lembrete na fila.\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport SettingsLayout from '../../settings/SettingsLayout.vue';\nimport BaseSettingsHeader from '../../settings/components/BaseSettingsHeader.vue';\n\nconst reminders = ref([]);\nconst isLoading = ref(false);\nconst route = useRoute();\nconst accountId = route.params.accountId;\n\nconst fetchReminders = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/reminders`\n );\n reminders.value = data;\n } catch (error) {\n useAlert('Erro ao buscar lembretes');\n } finally {\n isLoading.value = false;\n }\n};\n\nonMounted(fetchReminders);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout>\n <BaseSettingsHeader\n title=\"Fila de Lembretes\"\n description=\"Veja as mensagens agendadas e enviadas pelo sistema.\"\n />\n\n <div class=\"flex flex-col gap-4 p-8\">\n <div v-if=\"isLoading\" class=\"text-center\">\n <span class=\"spinner\" />\n </div>\n\n <div v-else class=\"flex flex-col gap-4\">\n <div class=\"overflow-x-auto border rounded-md\">\n <table\n class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\"\n >\n <thead class=\"bg-gray-50 dark:bg-gray-800\">\n <tr>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Agendamento\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Contato\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Status\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Mensagem\n </th>\n </tr>\n </thead>\n <tbody\n class=\"bg-white divide-y divide-gray-200 dark:bg-gray-900 dark:divide-gray-700\"\n >\n <tr v-for=\"reminder in reminders\" :key=\"reminder.id\">\n <td\n class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-white\"\n >\n {{ new Date(reminder.scheduled_at).toLocaleString() }}\n </td>\n <td\n class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-500 dark:text-gray-300\"\n >\n {{ reminder.contact_name || '-' }}\n </td>\n <td class=\"px-6 py-4 whitespace-nowrap text-sm\">\n <span\n class=\"px-2 inline-flex text-xs leading-5 font-semibold rounded-full\"\n :class=\"{\n 'bg-yellow-100 text-yellow-800':\n reminder.status === 'pending',\n 'bg-green-100 text-green-800': reminder.status === 'sent',\n 'bg-red-100 text-red-800': reminder.status === 'failed',\n }\"\n >\n {{ reminder.status }}\n </span>\n </td>\n <td\n class=\"px-6 py-4 text-sm text-gray-500 dark:text-gray-300 truncate max-w-xs\"\n >\n {{ reminder.message }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div\n v-if=\"reminders.length === 0\"\n class=\"text-center text-slate-500 p-4\"\n >{{$t(`\n Nenhum lembrete na fila.\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport SettingsLayout from '../../settings/SettingsLayout.vue';\nimport BaseSettingsHeader from '../../settings/components/BaseSettingsHeader.vue';\n\nconst reminders = ref([]);\nconst isLoading = ref(false);\nconst route = useRoute();\nconst accountId = route.params.accountId;\n\nconst fetchReminders = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/reminders`\n );\n reminders.value = data;\n } catch (error) {\n useAlert('Erro ao buscar lembretes');\n } finally {\n isLoading.value = false;\n }\n};\n\nonMounted(fetchReminders);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <SettingsLayout>\n <BaseSettingsHeader\n title=\"Fila de Lembretes\"\n description=\"Veja as mensagens agendadas e enviadas pelo sistema.\"\n />\n\n <div class=\"flex flex-col gap-4 p-8\">\n <div v-if=\"isLoading\" class=\"text-center\">\n <span class=\"spinner\" />\n </div>\n\n <div v-else class=\"flex flex-col gap-4\">\n <div class=\"overflow-x-auto border rounded-md\">\n <table\n class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\"\n >\n <thead class=\"bg-gray-50 dark:bg-gray-800\">\n <tr>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Agendamento\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Contato\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Status\n </th>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n Mensagem\n </th>\n </tr>\n </thead>\n <tbody\n class=\"bg-white divide-y divide-gray-200 dark:bg-gray-900 dark:divide-gray-700\"\n >\n <tr v-for=\"reminder in reminders\" :key=\"reminder.id\">\n <td\n class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-white\"\n >\n {{ new Date(reminder.scheduled_at).toLocaleString() }}\n </td>\n <td\n class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-500 dark:text-gray-300\"\n >\n {{ reminder.contact_name || '-' }}\n </td>\n <td class=\"px-6 py-4 whitespace-nowrap text-sm\">\n <span\n class=\"px-2 inline-flex text-xs leading-5 font-semibold rounded-full\"\n :class=\"{\n 'bg-yellow-100 text-yellow-800':\n reminder.status === 'pending',\n 'bg-green-100 text-green-800': reminder.status === 'sent',\n 'bg-red-100 text-red-800': reminder.status === 'failed',\n }\"\n >\n {{ reminder.status }}\n </span>\n </td>\n <td\n class=\"px-6 py-4 text-sm text-gray-500 dark:text-gray-300 truncate max-w-xs\"\n >\n {{ reminder.message }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div\n v-if=\"reminders.length === 0\"\n class=\"text-center text-slate-500 p-4\"\n >\n Nenhum lembrete na fila.\n </div>\n </div>\n </div>\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/reservations/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/responses/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/responses/Pending.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/tools/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/units/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Painel Administrativo\n ' is used","line":111,"column":79,"nodeType":null,"endLine":113,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3006],"text":"<i18n>\n{\n \"en\": {\n \"\\n Painel Administrativo\\n \": \"\\n Painel Administrativo\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">{{$t(`\n Painel Administrativo\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Nome da Unidade' is used","line":166,"column":39,"nodeType":null,"endLine":166,"endColumn":54,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4696],"text":"<i18n>\n{\n \"en\": {\n \"Nome da Unidade\": \"Nome da Unidade\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">{{$t('Nome da Unidade')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Status' is used","line":167,"column":39,"nodeType":null,"endLine":167,"endColumn":45,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4746],"text":"<i18n>\n{\n \"en\": {\n \"Status\": \"Status\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">{{$t('Status')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Ações' is used","line":168,"column":50,"nodeType":null,"endLine":168,"endColumn":55,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4806],"text":"<i18n>\n{\n \"en\": {\n \"Ações\": \"Ações\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">{{$t('Ações')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n ID: ' is used","line":182,"column":78,"nodeType":null,"endLine":183,"endColumn":27,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,5439],"text":"<i18n>\n{\n \"en\": {\n \"\\n ID: \": \"\\n ID: \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">{{$t(`\n ID: `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Ativo' is used","line":197,"column":51,"nodeType":null,"endLine":197,"endColumn":58,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6074],"text":"<i18n>\n{\n \"en\": {\n \"Ativo\": \"Ativo\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? $t('Ativo')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Inativo' is used","line":197,"column":61,"nodeType":null,"endLine":197,"endColumn":70,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6086],"text":"<i18n>\n{\n \"en\": {\n \"Inativo\": \"Inativo\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? 'Ativo' : $t('Inativo')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Editar\n ' is used","line":204,"column":20,"nodeType":null,"endLine":206,"endColumn":19,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6425],"text":"<i18n>\n{\n \"en\": {\n \"\\n Editar\\n \": \"\\n Editar\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? 'Ativo' : 'Inativo' }}\n </span>\n </td>\n <td class=\"px-6 py-4 text-right flex justify-end gap-2\">\n <button\n class=\"text-blue-600 hover:text-blue-800 font-medium\"\n @click=\"openEditModal(unit)\"\n >{{$t(`\n Editar\n `)}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Desativar' is used","line":211,"column":51,"nodeType":null,"endLine":211,"endColumn":62,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6684],"text":"<i18n>\n{\n \"en\": {\n \"Desativar\": \"Desativar\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? 'Ativo' : 'Inativo' }}\n </span>\n </td>\n <td class=\"px-6 py-4 text-right flex justify-end gap-2\">\n <button\n class=\"text-blue-600 hover:text-blue-800 font-medium\"\n @click=\"openEditModal(unit)\"\n >\n Editar\n </button>\n <button\n class=\"text-slate-600 hover:text-slate-800 font-medium transition-colors\"\n @click=\"toggleStatus(unit)\"\n >\n {{ unit.status === 'active' ? $t('Desativar')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Ativar' is used","line":211,"column":65,"nodeType":null,"endLine":211,"endColumn":73,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6695],"text":"<i18n>\n{\n \"en\": {\n \"Ativar\": \"Ativar\"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? 'Ativo' : 'Inativo' }}\n </span>\n </td>\n <td class=\"px-6 py-4 text-right flex justify-end gap-2\">\n <button\n class=\"text-blue-600 hover:text-blue-800 font-medium\"\n @click=\"openEditModal(unit)\"\n >\n Editar\n </button>\n <button\n class=\"text-slate-600 hover:text-slate-800 font-medium transition-colors\"\n @click=\"toggleStatus(unit)\"\n >\n {{ unit.status === 'active' ? 'Desativar' : $t('Ativar')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Nenhuma unidade cadastrada.\n ' is used","line":216,"column":78,"nodeType":null,"endLine":218,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6954],"text":"<i18n>\n{\n \"en\": {\n \"\\n Nenhuma unidade cadastrada.\\n \": \"\\n Nenhuma unidade cadastrada.\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? 'Ativo' : 'Inativo' }}\n </span>\n </td>\n <td class=\"px-6 py-4 text-right flex justify-end gap-2\">\n <button\n class=\"text-blue-600 hover:text-blue-800 font-medium\"\n @click=\"openEditModal(unit)\"\n >\n Editar\n </button>\n <button\n class=\"text-slate-600 hover:text-slate-800 font-medium transition-colors\"\n @click=\"toggleStatus(unit)\"\n >\n {{ unit.status === 'active' ? 'Desativar' : 'Ativar' }}\n </button>\n </td>\n </tr>\n <tr v-if=\"units.length === 0\">\n <td colspan=\"3\" class=\"px-6 py-8 text-center text-slate-500\">{{$t(`\n Nenhuma unidade cadastrada.\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { onMounted, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useRoute } from 'vue-router';\nimport UnitModal from './UnitModal.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\n\nconst units = ref([]);\nconst isLoading = ref(false);\nconst showModal = ref(false);\nconst selectedUnit = ref(null);\nconst route = useRoute();\nconst { t } = useI18n();\nconst accountId = route.params.accountId;\n\nconst openAddUnitModal = () => {\n selectedUnit.value = null;\n showModal.value = true;\n};\n\nconst openEditModal = unit => {\n selectedUnit.value = unit;\n showModal.value = true;\n};\n\nconst handleSave = savedUnit => {\n const index = units.value.findIndex(u => u.id === savedUnit.id);\n if (index !== -1) {\n units.value[index] = savedUnit;\n } else {\n units.value.push(savedUnit);\n }\n};\n\nconst fetchUnits = async () => {\n isLoading.value = true;\n try {\n const { data } = await window.axios.get(\n `/api/v1/accounts/${accountId}/captain/units?all=true`\n );\n units.value = data;\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.ERROR_FETCHING'));\n } finally {\n isLoading.value = false;\n }\n};\n\nconst toggleStatus = async unit => {\n const newStatus = unit.status === 'active' ? 'inactive' : 'active';\n try {\n await window.axios.put(\n `/api/v1/accounts/${accountId}/captain/units/${unit.id}`,\n {\n unit: { status: newStatus },\n }\n );\n unit.status = newStatus;\n useAlert(t('CAPTAIN.UNITS.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(t('CAPTAIN.UNITS.UPDATE_ERROR'));\n }\n};\n\nconst getPublicPageURL = () => {\n return `${window.location.origin}/public/accounts/${accountId}/reservas`;\n};\n\nconst copyPublicLink = async () => {\n try {\n await navigator.clipboard.writeText(getPublicPageURL());\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_SUCCESS'));\n } catch (err) {\n useAlert(t('CAPTAIN.UNITS.COPY_LINK_ERROR'));\n }\n};\n\nconst openPublicPage = () => {\n window.open(getPublicPageURL(), '_blank');\n};\n\n/*\nconst deleteUnit = async unitId => {\n if (!confirm('Tem certeza que deseja excluir esta unidade?')) return;\n\n try {\n await window.axios.delete(\n `/api/v1/accounts/${accountId}/captain/units/${unitId}`\n );\n units.value = units.value.filter(u => u.id !== unitId);\n useAlert('Unidade excluída com sucesso');\n } catch (error) {\n useAlert('Erro ao excluir unidade');\n }\n};\n*/\n\nonMounted(fetchUnits);\n</script>\n\n<template>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <div\n class=\"flex flex-col h-full w-full bg-slate-50 dark:bg-slate-900 px-8 py-8 overflow-y-auto\"\n >\n <div class=\"flex-1 w-full\">\n <div class=\"flex justify-between items-center mb-6\">\n <h1 class=\"text-2xl font-semibold text-slate-800 dark:text-slate-100\">\n Painel Administrativo\n </h1>\n <div class=\"flex gap-2\">\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"link\"\n @click=\"copyPublicLink\"\n >\n {{ $t('CAPTAIN.UNITS.COPY_LINK') }}\n </Button>\n <Button\n variant=\"outline\"\n color=\"slate\"\n size=\"sm\"\n icon=\"arrow-up-right\"\n @click=\"openPublicPage\"\n >\n {{ $t('CAPTAIN.UNITS.OPEN_PAGE') }}\n </Button>\n </div>\n </div>\n\n <div\n class=\"bg-white dark:bg-slate-800 rounded-lg shadow-sm border border-slate-200 dark:border-slate-700 w-full\"\n >\n <div\n class=\"p-6 border-b border-slate-200 dark:border-slate-700 flex justify-between items-center bg-white dark:bg-slate-800 rounded-t-lg\"\n >\n <h2 class=\"text-lg font-medium text-slate-800 dark:text-slate-100\">\n {{ $t('CAPTAIN.UNITS.HEADER') }}\n </h2>\n <Button\n variant=\"solid\"\n size=\"sm\"\n class=\"flex items-center gap-2\"\n @click=\"openAddUnitModal\"\n >\n <i class=\"i-lucide-plus\" />\n {{ $t('CAPTAIN.UNITS.ADD_NEW') }}\n </Button>\n </div>\n\n <div v-if=\"isLoading\" class=\"p-8 flex justify-center\">\n <Spinner />\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"w-full text-left text-sm\">\n <thead\n class=\"bg-slate-50 dark:bg-slate-700/50 text-slate-500 dark:text-slate-300 uppercase font-medium\"\n >\n <tr>\n <th class=\"px-6 py-4\">Nome da Unidade</th>\n <th class=\"px-6 py-4\">Status</th>\n <th class=\"px-6 py-4 text-right\">Ações</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-slate-200 dark:divide-slate-700\">\n <tr\n v-for=\"unit in units\"\n :key=\"unit.id\"\n class=\"hover:bg-slate-50 dark:hover:bg-slate-700/30 transition-colors\"\n >\n <td\n class=\"px-6 py-4 font-medium text-slate-900 dark:text-slate-100\"\n >\n <div class=\"flex flex-col\">\n <span>{{ unit.name }}</span>\n <span class=\"text-xs text-slate-500 dark:text-slate-400\">\n ID: {{ unit.id }}\n </span>\n </div>\n </td>\n <td class=\"px-6 py-4\">\n <span\n class=\"px-2 py-1 text-xs font-medium rounded-full\"\n :class=\"{\n 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300':\n unit.status === 'active',\n 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300':\n unit.status === 'inactive',\n }\"\n >\n {{ unit.status === 'active' ? 'Ativo' : 'Inativo' }}\n </span>\n </td>\n <td class=\"px-6 py-4 text-right flex justify-end gap-2\">\n <button\n class=\"text-blue-600 hover:text-blue-800 font-medium\"\n @click=\"openEditModal(unit)\"\n >\n Editar\n </button>\n <button\n class=\"text-slate-600 hover:text-slate-800 font-medium transition-colors\"\n @click=\"toggleStatus(unit)\"\n >\n {{ unit.status === 'active' ? 'Desativar' : 'Ativar' }}\n </button>\n </td>\n </tr>\n <tr v-if=\"units.length === 0\">\n <td colspan=\"3\" class=\"px-6 py-8 text-center text-slate-500\">\n Nenhuma unidade cadastrada.\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n\n <UnitModal\n :show=\"showModal\"\n :unit=\"selectedUnit\"\n @close=\"showModal = false\"\n @save=\"handleSave\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/captain/units/UnitModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/commands/CmdBarConversationSnooze.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/commands/commandbar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/companies/pages/CompaniesIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/companies/routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsBulkActionBar.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/contacts/contactFilterItems/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactManageView.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CONTACTS_LAYOUT.SIDEBAR.TABS.${tab.key}`' dynamic key is used'","line":48,"column":12,"nodeType":"CallExpression","endLine":48,"endColumn":56}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { onMounted, computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport ContactsDetailsLayout from 'dashboard/components-next/Contacts/ContactsDetailsLayout.vue';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\nimport ContactDetails from 'dashboard/components-next/Contacts/Pages/ContactDetails.vue';\nimport TabBar from 'dashboard/components-next/tabbar/TabBar.vue';\nimport ContactNotes from 'dashboard/components-next/Contacts/ContactsSidebar/ContactNotes.vue';\nimport ContactHistory from 'dashboard/components-next/Contacts/ContactsSidebar/ContactHistory.vue';\nimport ContactMerge from 'dashboard/components-next/Contacts/ContactsSidebar/ContactMerge.vue';\nimport ContactCustomAttributes from 'dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributes.vue';\n\nconst store = useStore();\nconst route = useRoute();\nconst router = useRouter();\n\nconst contact = useMapGetter('contacts/getContactById');\nconst uiFlags = useMapGetter('contacts/getUIFlags');\n\nconst activeTab = ref('attributes');\nconst contactMergeRef = ref(null);\n\nconst isFetchingItem = computed(() => uiFlags.value.isFetchingItem);\nconst isMergingContact = computed(() => uiFlags.value.isMerging);\nconst isUpdatingContact = computed(() => uiFlags.value.isUpdating);\n\nconst selectedContact = computed(() => contact.value(route.params.contactId));\n\nconst showSpinner = computed(\n () => isFetchingItem.value || isMergingContact.value\n);\n\nconst { t } = useI18n();\n\nconst CONTACT_TABS_OPTIONS = [\n { key: 'ATTRIBUTES', value: 'attributes' },\n { key: 'HISTORY', value: 'history' },\n { key: 'NOTES', value: 'notes' },\n { key: 'MERGE', value: 'merge' },\n];\n\nconst tabs = computed(() => {\n return CONTACT_TABS_OPTIONS.map(tab => ({\n label: t(`CONTACTS_LAYOUT.SIDEBAR.TABS.${tab.key}`),\n value: tab.value,\n }));\n});\n\nconst activeTabIndex = computed(() => {\n return CONTACT_TABS_OPTIONS.findIndex(v => v.value === activeTab.value);\n});\n\nconst goToContactsList = () => {\n if (window.history.state?.back || window.history.length > 1) {\n router.back();\n } else {\n router.push(`/app/accounts/${route.params.accountId}/contacts?page=1`);\n }\n};\n\nconst fetchActiveContact = async () => {\n if (route.params.contactId) {\n await store.dispatch('contacts/show', { id: route.params.contactId });\n await store.dispatch(\n 'contacts/fetchContactableInbox',\n route.params.contactId\n );\n }\n};\n\nconst handleTabChange = tab => {\n activeTab.value = tab.value;\n};\n\nconst fetchContactNotes = () => {\n const { contactId } = route.params;\n if (contactId) store.dispatch('contactNotes/get', { contactId });\n};\n\nconst fetchContactConversations = () => {\n const { contactId } = route.params;\n if (contactId) store.dispatch('contactConversations/get', contactId);\n};\n\nconst fetchAttributes = () => {\n store.dispatch('attributes/get');\n};\n\nconst toggleContactBlock = async isBlocked => {\n const ALERT_MESSAGES = {\n success: {\n block: t('CONTACTS_LAYOUT.HEADER.ACTIONS.BLOCK_SUCCESS_MESSAGE'),\n unblock: t('CONTACTS_LAYOUT.HEADER.ACTIONS.UNBLOCK_SUCCESS_MESSAGE'),\n },\n error: {\n block: t('CONTACTS_LAYOUT.HEADER.ACTIONS.BLOCK_ERROR_MESSAGE'),\n unblock: t('CONTACTS_LAYOUT.HEADER.ACTIONS.UNBLOCK_ERROR_MESSAGE'),\n },\n };\n\n try {\n await store.dispatch(`contacts/update`, {\n ...selectedContact.value,\n blocked: !isBlocked,\n });\n useAlert(\n isBlocked ? ALERT_MESSAGES.success.unblock : ALERT_MESSAGES.success.block\n );\n } catch (error) {\n useAlert(\n isBlocked ? ALERT_MESSAGES.error.unblock : ALERT_MESSAGES.error.block\n );\n }\n};\n\nonMounted(() => {\n fetchActiveContact();\n fetchContactNotes();\n fetchContactConversations();\n fetchAttributes();\n});\n</script>\n\n<template>\n <div\n class=\"flex flex-col justify-between flex-1 h-full m-0 overflow-auto bg-n-background\"\n >\n <ContactsDetailsLayout\n :button-label=\"$t('CONTACTS_LAYOUT.HEADER.SEND_MESSAGE')\"\n :selected-contact=\"selectedContact\"\n is-detail-view\n :show-pagination-footer=\"false\"\n :is-updating=\"isUpdatingContact\"\n @go-to-contacts-list=\"goToContactsList\"\n @toggle-block=\"toggleContactBlock\"\n >\n <div\n v-if=\"showSpinner\"\n class=\"flex items-center justify-center py-10 text-n-slate-11\"\n >\n <Spinner />\n </div>\n <ContactDetails\n v-else-if=\"selectedContact\"\n :selected-contact=\"selectedContact\"\n @go-to-contacts-list=\"goToContactsList\"\n />\n <template #sidebar>\n <div class=\"px-6\">\n <TabBar\n :tabs=\"tabs\"\n :initial-active-tab=\"activeTabIndex\"\n class=\"w-full [&>button]:w-full bg-n-alpha-black2\"\n @tab-changed=\"handleTabChange\"\n />\n </div>\n <div\n v-if=\"isFetchingItem\"\n class=\"flex items-center justify-center py-10 text-n-slate-11\"\n >\n <Spinner />\n </div>\n <template v-else>\n <ContactCustomAttributes\n v-if=\"activeTab === 'attributes'\"\n :selected-contact=\"selectedContact\"\n />\n <ContactNotes v-if=\"activeTab === 'notes'\" />\n <ContactHistory v-if=\"activeTab === 'history'\" />\n <ContactMerge\n v-if=\"activeTab === 'merge'\"\n ref=\"contactMergeRef\"\n :selected-contact=\"selectedContact\"\n @go-to-contacts-list=\"goToContactsList\"\n @reset-tab=\"handleTabChange(CONTACT_TABS_OPTIONS[0])\"\n />\n </template>\n </template>\n </ContactsDetailsLayout>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactsIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/contacts/routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ContactConversations.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ContactDetailsItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ConversationAction.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ConversationInfo.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'element.title' dynamic key is used'","line":98,"column":19,"nodeType":"CallExpression","endLine":98,"endColumn":36}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { getLanguageName } from 'dashboard/components/widgets/conversation/advancedFilterItems/languages';\nimport ContactDetailsItem from './ContactDetailsItem.vue';\nimport CustomAttributes from './customAttributes/CustomAttributes.vue';\n\nconst props = defineProps({\n conversationAttributes: {\n type: Object,\n default: () => ({}),\n },\n contactAttributes: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst referer = computed(() => props.conversationAttributes.referer);\nconst initiatedAt = computed(\n () => props.conversationAttributes.initiated_at?.timestamp\n);\n\nconst browserInfo = computed(() => props.conversationAttributes.browser);\n\nconst browserName = computed(() => {\n if (!browserInfo.value) return '';\n const { browser_name: name = '', browser_version: version = '' } =\n browserInfo.value;\n return `${name} ${version}`;\n});\n\nconst browserLanguage = computed(() =>\n getLanguageName(props.conversationAttributes.browser_language)\n);\n\nconst platformName = computed(() => {\n if (!browserInfo.value) return '';\n const { platform_name: name = '', platform_version: version = '' } =\n browserInfo.value;\n return `${name} ${version}`;\n});\n\nconst createdAtIp = computed(() => props.contactAttributes.created_at_ip);\n\nconst staticElements = computed(() =>\n [\n {\n content: initiatedAt,\n title: 'CONTACT_PANEL.INITIATED_AT',\n key: 'static-initiated-at',\n type: 'static_attribute',\n },\n {\n content: browserLanguage,\n title: 'CONTACT_PANEL.BROWSER_LANGUAGE',\n key: 'static-browser-language',\n type: 'static_attribute',\n },\n {\n content: referer,\n title: 'CONTACT_PANEL.INITIATED_FROM',\n key: 'static-referer',\n type: 'static_attribute',\n },\n {\n content: browserName,\n title: 'CONTACT_PANEL.BROWSER',\n key: 'static-browser',\n type: 'static_attribute',\n },\n {\n content: platformName,\n title: 'CONTACT_PANEL.OS',\n key: 'static-platform',\n type: 'static_attribute',\n },\n {\n content: createdAtIp,\n title: 'CONTACT_PANEL.IP_ADDRESS',\n key: 'static-ip-address',\n type: 'static_attribute',\n },\n ].filter(attribute => !!attribute.content.value)\n);\n</script>\n\n<template>\n <div class=\"conversation--details\">\n <CustomAttributes\n :static-elements=\"staticElements\"\n attribute-class=\"conversation--attribute\"\n attribute-from=\"conversation_panel\"\n attribute-type=\"conversation_attribute\"\n >\n <template #staticItem=\"{ element }\">\n <ContactDetailsItem\n :key=\"element.title\"\n :title=\"$t(element.title)\"\n :value=\"element.content.value\"\n >\n <a\n v-if=\"element.key === 'static-referer'\"\n :href=\"element.content.value\"\n rel=\"noopener noreferrer nofollow\"\n target=\"_blank\"\n class=\"text-n-brand\"\n >\n {{ element.content.value }}\n </a>\n </ContactDetailsItem>\n </template>\n </CustomAttributes>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ConversationParticipant.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/ConversationView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/Macros/List.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/Macros/MacroItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/Macros/MacroPreview.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MACROS.ACTIONS.${action.actionName}`' dynamic key is used'","line":68,"column":12,"nodeType":"CallExpression","endLine":68,"endColumn":53}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useMapGetter } from 'dashboard/composables/store.js';\nimport {\n resolveActionName,\n resolveTeamIds,\n resolveLabels,\n resolveAgents,\n} from 'dashboard/routes/dashboard/settings/macros/macroHelper';\n\nconst props = defineProps({\n macro: {\n type: Object,\n required: true,\n },\n});\n\nconst labels = useMapGetter('labels/getLabels');\nconst teams = useMapGetter('teams/getTeams');\nconst agents = useMapGetter('agents/getAgents');\n\nconst getActionValue = (key, params) => {\n const actionsMap = {\n assign_team: resolveTeamIds(teams.value, params),\n add_label: resolveLabels(labels.value, params),\n remove_label: resolveLabels(labels.value, params),\n assign_agent: resolveAgents(agents.value, params),\n mute_conversation: null,\n snooze_conversation: null,\n resolve_conversation: null,\n remove_assigned_team: null,\n send_webhook_event: params[0],\n send_message: params[0],\n send_email_transcript: params[0],\n add_private_note: params[0],\n };\n return actionsMap[key] || '';\n};\n\nconst resolvedMacro = computed(() => {\n return props.macro.actions.map(action => ({\n actionName: resolveActionName(action.action_name),\n actionValue: getActionValue(action.action_name, action.action_params),\n }));\n});\n</script>\n\n<template>\n <div\n class=\"macro-preview absolute border border-n-weak max-h-[22.5rem] z-50 w-64 rounded-md bg-n-alpha-3 backdrop-blur-[100px] shadow-lg bottom-8 right-8 overflow-y-auto p-4 text-left rtl:text-right\"\n >\n <h6 class=\"mb-4 text-sm text-n-slate-12\">\n {{ macro.name }}\n </h6>\n <div\n v-for=\"(action, i) in resolvedMacro\"\n :key=\"i\"\n class=\"relative pl-4 macro-block\"\n >\n <div\n v-if=\"i !== macro.actions.length - 1\"\n class=\"top-[0.390625rem] absolute -bottom-1 left-0 w-px bg-n-slate-6\"\n />\n <div\n class=\"absolute -left-[0.21875rem] top-[0.2734375rem] w-2 h-2 rounded-full bg-n-solid-1 border-2 border-solid border-n-weak dark:border-n-slate-6\"\n />\n <p class=\"mb-1 text-xs text-n-slate-11\">\n {{ $t(`MACROS.ACTIONS.${action.actionName}`) }}\n </p>\n <p class=\"text-n-slate-12 text-sm\">{{ action.actionValue }}</p>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.macro-preview {\n .macro-block {\n &:not(:last-child) {\n @apply pb-2;\n }\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/captain/ReservationPanel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfoRow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactNotes.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/contact/EditContact.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/contact/SocialIcons.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/conversation.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/customAttributes/CustomAttributes.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/labels/LabelBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/conversation/search/SwitchLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/customviews/DeleteCustomViews.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/dashboard.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleSearch/ArticleSearchResultItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' / ' is used","line":67,"column":12,"nodeType":null,"endLine":67,"endColumn":17,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1535],"text":"<i18n>\n{\n \"en\": {\n \" / \": \" / \"\n }\n}\n</i18n>\n\n<script setup>\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { copyTextToClipboard } from 'shared/helpers/clipboard';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n default: 0,\n },\n title: {\n type: String,\n default: 'Untitled',\n },\n url: {\n type: String,\n default: '',\n },\n category: {\n type: String,\n default: '',\n },\n locale: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['insert', 'preview']);\n\nconst { t } = useI18n();\n\nconst handleInsert = e => {\n e.stopPropagation();\n emit('insert', props.id);\n};\n\nconst handlePreview = e => {\n e.stopPropagation();\n emit('preview', props.id);\n};\n\nconst handleCopy = async e => {\n e.stopPropagation();\n await copyTextToClipboard(props.url);\n useAlert(t('CONTACT_PANEL.COPY_SUCCESSFUL'));\n};\n</script>\n\n<template>\n <button\n class=\"flex flex-col w-full gap-1 px-2 py-1 border border-transparent border-solid rounded-md cursor-pointer hover:bg-n-slate-3 group focus:outline-none focus:bg-n-slate-3\"\n @click=\"handlePreview\"\n >\n <h4\n class=\"w-full mb-0 -mx-1 text-sm rounded-sm ltr:text-left rtl:text-right text-n-slate-12 hover:underline group-hover:underline\"\n >\n {{ title }}\n </h4>\n\n <div class=\"flex content-between items-center gap-0.5 w-full\">\n <p\n class=\"w-full mb-0 text-sm ltr:text-left rtl:text-right text-n-slate-11\"\n >\n {{ locale }}\n {{ $t(` / `)"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useAlert } from 'dashboard/composables';\nimport { useI18n } from 'vue-i18n';\nimport { copyTextToClipboard } from 'shared/helpers/clipboard';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n id: {\n type: Number,\n default: 0,\n },\n title: {\n type: String,\n default: 'Untitled',\n },\n url: {\n type: String,\n default: '',\n },\n category: {\n type: String,\n default: '',\n },\n locale: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['insert', 'preview']);\n\nconst { t } = useI18n();\n\nconst handleInsert = e => {\n e.stopPropagation();\n emit('insert', props.id);\n};\n\nconst handlePreview = e => {\n e.stopPropagation();\n emit('preview', props.id);\n};\n\nconst handleCopy = async e => {\n e.stopPropagation();\n await copyTextToClipboard(props.url);\n useAlert(t('CONTACT_PANEL.COPY_SUCCESSFUL'));\n};\n</script>\n\n<template>\n <button\n class=\"flex flex-col w-full gap-1 px-2 py-1 border border-transparent border-solid rounded-md cursor-pointer hover:bg-n-slate-3 group focus:outline-none focus:bg-n-slate-3\"\n @click=\"handlePreview\"\n >\n <h4\n class=\"w-full mb-0 -mx-1 text-sm rounded-sm ltr:text-left rtl:text-right text-n-slate-12 hover:underline group-hover:underline\"\n >\n {{ title }}\n </h4>\n\n <div class=\"flex content-between items-center gap-0.5 w-full\">\n <p\n class=\"w-full mb-0 text-sm ltr:text-left rtl:text-right text-n-slate-11\"\n >\n {{ locale }}\n {{ ` / ` }}\n {{ category || $t('HELP_CENTER.ARTICLE_SEARCH_RESULT.UNCATEGORIZED') }}\n </p>\n <div class=\"flex gap-0.5\">\n <Button\n :title=\"$t('HELP_CENTER.ARTICLE_SEARCH_RESULT.COPY_LINK')\"\n faded\n slate\n xs\n type=\"reset\"\n icon=\"i-lucide-copy\"\n class=\"invisible group-hover:visible\"\n @click=\"handleCopy\"\n />\n <Button\n xs\n faded\n slate\n :label=\"$t('HELP_CENTER.ARTICLE_SEARCH_RESULT.INSERT_ARTICLE')\"\n @click=\"handleInsert\"\n />\n </div>\n </div>\n </button>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleSearch/ArticleView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleSearch/Header.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleSearch/SearchPopover.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleSearch/SearchResults.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/components/UpgradePage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/helpcenter.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/helpers/routeHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/helpers/specs/routeHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/HelpCenterPageRouteView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesEditPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesNewPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsCategoriesIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsLocalesIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsNewPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsSettingsIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/InboxEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/InboxList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/InboxView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/InboxContextMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/InboxDisplayMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/InboxItemHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/InboxListHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/InboxOptionMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/MenuItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/components/PaginationButton.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '1' is used","line":64,"column":31,"nodeType":null,"endLine":64,"endColumn":34,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1351],"text":"<i18n>\n{\n \"en\": {\n \"1\": \"1\"\n }\n}\n</i18n>\n\n<script>\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n totalLength: {\n type: Number,\n default: 0,\n },\n currentIndex: {\n type: Number,\n default: 0,\n },\n },\n emits: ['prev', 'next'],\n computed: {\n isUpDisabled() {\n return this.currentIndex === 1;\n },\n isDownDisabled() {\n return this.currentIndex === this.totalLength || this.totalLength <= 1;\n },\n },\n methods: {\n handleUpClick() {\n if (this.currentIndex > 1) {\n this.$emit('prev');\n }\n },\n handleDownClick() {\n if (this.currentIndex < this.totalLength) {\n this.$emit('next');\n }\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex gap-1 items-center\">\n <NextButton\n icon=\"i-lucide-chevron-up\"\n xs\n slate\n faded\n :disabled=\"isUpDisabled\"\n @click=\"handleUpClick\"\n />\n <NextButton\n icon=\"i-lucide-chevron-down\"\n xs\n slate\n faded\n :disabled=\"isDownDisabled\"\n @click=\"handleDownClick\"\n />\n </div>\n <div class=\"flex items-center gap-1 whitespace-nowrap\">\n <span class=\"text-sm font-medium text-n-slate-12 tabular-nums\">\n {{ totalLength <= 1 ? $t('1')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n /\n ' is used","line":69,"column":8,"nodeType":null,"endLine":71,"endColumn":7,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1507],"text":"<i18n>\n{\n \"en\": {\n \"\\n /\\n \": \"\\n /\\n \"\n }\n}\n</i18n>\n\n<script>\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n totalLength: {\n type: Number,\n default: 0,\n },\n currentIndex: {\n type: Number,\n default: 0,\n },\n },\n emits: ['prev', 'next'],\n computed: {\n isUpDisabled() {\n return this.currentIndex === 1;\n },\n isDownDisabled() {\n return this.currentIndex === this.totalLength || this.totalLength <= 1;\n },\n },\n methods: {\n handleUpClick() {\n if (this.currentIndex > 1) {\n this.$emit('prev');\n }\n },\n handleDownClick() {\n if (this.currentIndex < this.totalLength) {\n this.$emit('next');\n }\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex gap-1 items-center\">\n <NextButton\n icon=\"i-lucide-chevron-up\"\n xs\n slate\n faded\n :disabled=\"isUpDisabled\"\n @click=\"handleUpClick\"\n />\n <NextButton\n icon=\"i-lucide-chevron-down\"\n xs\n slate\n faded\n :disabled=\"isDownDisabled\"\n @click=\"handleDownClick\"\n />\n </div>\n <div class=\"flex items-center gap-1 whitespace-nowrap\">\n <span class=\"text-sm font-medium text-n-slate-12 tabular-nums\">\n {{ totalLength <= 1 ? '1' : currentIndex }}\n </span>\n <span\n v-if=\"totalLength > 1\"\n class=\"text-sm text-n-slate-9 relative -top-px\"\n >{{$t(`\n /\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n totalLength: {\n type: Number,\n default: 0,\n },\n currentIndex: {\n type: Number,\n default: 0,\n },\n },\n emits: ['prev', 'next'],\n computed: {\n isUpDisabled() {\n return this.currentIndex === 1;\n },\n isDownDisabled() {\n return this.currentIndex === this.totalLength || this.totalLength <= 1;\n },\n },\n methods: {\n handleUpClick() {\n if (this.currentIndex > 1) {\n this.$emit('prev');\n }\n },\n handleDownClick() {\n if (this.currentIndex < this.totalLength) {\n this.$emit('next');\n }\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex gap-1 items-center\">\n <NextButton\n icon=\"i-lucide-chevron-up\"\n xs\n slate\n faded\n :disabled=\"isUpDisabled\"\n @click=\"handleUpClick\"\n />\n <NextButton\n icon=\"i-lucide-chevron-down\"\n xs\n slate\n faded\n :disabled=\"isDownDisabled\"\n @click=\"handleDownClick\"\n />\n </div>\n <div class=\"flex items-center gap-1 whitespace-nowrap\">\n <span class=\"text-sm font-medium text-n-slate-12 tabular-nums\">\n {{ totalLength <= 1 ? '1' : currentIndex }}\n </span>\n <span\n v-if=\"totalLength > 1\"\n class=\"text-sm text-n-slate-9 relative -top-px\"\n >\n /\n </span>\n <span v-if=\"totalLength > 1\" class=\"text-sm text-n-slate-9 tabular-nums\">\n {{ totalLength }}\n </span>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/helpers/InboxViewHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/inbox/routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/components/JasmineToolCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/components/JasmineToolsTab.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/data/templates.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/jasmine.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/pages/JasmineInboxDashboard.vue","messages":[],"suppressedMessages":[{"ruleId":"no-alert","severity":1,"message":"Unexpected confirm.","line":109,"column":8,"nodeType":"CallExpression","messageId":"unexpected","endLine":109,"endColumn":71,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"no-alert","severity":1,"message":"Unexpected confirm.","line":166,"column":8,"nodeType":"CallExpression","messageId":"unexpected","endLine":166,"endColumn":47,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"no-alert","severity":1,"message":"Unexpected confirm.","line":240,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":242,"endColumn":6,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/pages/JasmineInboxes.vue","messages":[{"ruleId":"no-unused-vars","severity":2,"message":"'getChannelIcon' is assigned a value but never used.","line":22,"column":7,"nodeType":"Identifier","messageId":"unusedVar","endLine":22,"endColumn":21},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used in `title`.","line":48,"column":15,"nodeType":"VLiteral","messageId":"unexpectedInAttr","endLine":48,"endColumn":35},{"ruleId":"prettier/prettier","severity":2,"message":"Parsing error: Opening tag \"span\" not terminated.","line":66,"column":16,"nodeType":null,"endLine":70,"endColumn":38},{"ruleId":"vue/no-parsing-error","severity":2,"message":"Parsing error: Unexpected token :.","line":69,"column":17,"nodeType":"VElement","messageId":"parsingError"},{"ruleId":"vue/valid-attribute-name","severity":2,"message":"Attribute name [getchannelicon(inbox.channel_type)]\" is not valid.","line":70,"column":1,"nodeType":"VAttribute","messageId":"attribute","endLine":70,"endColumn":38},{"ruleId":"vue/no-parsing-error","severity":2,"message":"Parsing error: unexpected-character-in-attribute-name.","line":70,"column":37,"nodeType":"VElement","messageId":"parsingError"},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":90,"column":46,"nodeType":"VText","messageId":"unexpected","endLine":91,"endColumn":19},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Canal ' is used","line":90,"column":46,"nodeType":null,"endLine":91,"endColumn":19,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3071],"text":"<i18n>\n{\n \"en\": {\n \"\\n Canal \": \"\\n Canal \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst router = useRouter();\nconst getters = useStoreGetters();\n\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst openInbox = inboxId => {\n router.push({\n name: 'jasmine_inbox_dashboard',\n params: { inboxId },\n });\n};\n\nconst getChannelIcon = channelType => {\n const icons = {\n 'Channel::WebWidget': 'i-lucide-message-square',\n 'Channel::FacebookPage': 'i-lucide-facebook',\n 'Channel::TwitterProfile': 'i-lucide-twitter',\n 'Channel::Whatsapp': 'i-lucide-phone',\n 'Channel::Api': 'i-lucide-webhook',\n 'Channel::Email': 'i-lucide-mail',\n 'Channel::Telegram': 'i-lucide-send',\n };\n return icons[channelType] || 'i-lucide-inbox';\n};\n\nconst getChannelName = channelType => {\n return channelType?.replace('Channel::', '') || 'Desconhecido';\n};\n</script>\n\n<template>\n <SettingsLayout\n :is-loading=\"false\"\n :no-records-found=\"!inboxes.length\"\n no-records-message=\"Nenhuma caixa de entrada encontrada\"\n >\n <template #header>\n <BaseSettingsHeader\n title=\"Agentes Jasmine AI\"\n description=\"Gerencie seus agentes de IA SDR. Selecione uma caixa de entrada para configurar sua base de conhecimento.\"\n />\n </template>\n\n <template #body>\n <div class=\"grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3\">\n <div\n v-for=\"inbox in inboxes\"\n :key=\"inbox.id\"\n class=\"flex flex-col p-6 m-[1px] outline outline-n-container outline-1 bg-n-alpha-3 rounded-md shadow cursor-pointer hover:shadow-md hover:outline-n-blue-7 transition-all\"\n @click=\"openInbox(inbox.id)\"\n >\n <!-- Icon and Status -->\n <div class=\"flex items-start justify-between mb-4\">\n <div\n class=\"flex items-center justify-center size-12 rounded-lg bg-n-blue-2\"\n >\n <span\n class=\"size-6 text-n-blue-text\"\n:class=\"[\n :class=\"\n[getChannelIcon(inbox.channel_type)]\"\n />\n </div>\n <span\n v-tooltip=\"'Ativo'\"\n class=\"text-white p-0.5 rounded-full size-5 flex items-center justify-center bg-n-teal-9\"\n >\n <i class=\"i-ph-check-bold text-sm\" />\n </span>\n </div>\n\n <!-- Name and Configure -->\n <div class=\"flex justify-between items-center mb-2\">\n <span class=\"text-base font-semibold text-n-slate-12\">{{\n inbox.name\n }}</span>\n <Button label=\"Configurar\" link @click.stop=\"openInbox(inbox.id)\" />\n </div>\n\n <!-- Description -->\n <p class=\"text-sm text-n-slate-11\">{{$t(`\n Canal `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":91,"column":59,"nodeType":"VText","messageId":"unexpected","endLine":93,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' configurado para\n Jasmine AI\n ' is used","line":91,"column":59,"nodeType":null,"endLine":93,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3162],"text":"<i18n>\n{\n \"en\": {\n \" configurado para\\n Jasmine AI\\n \": \" configurado para\\n Jasmine AI\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst router = useRouter();\nconst getters = useStoreGetters();\n\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst openInbox = inboxId => {\n router.push({\n name: 'jasmine_inbox_dashboard',\n params: { inboxId },\n });\n};\n\nconst getChannelIcon = channelType => {\n const icons = {\n 'Channel::WebWidget': 'i-lucide-message-square',\n 'Channel::FacebookPage': 'i-lucide-facebook',\n 'Channel::TwitterProfile': 'i-lucide-twitter',\n 'Channel::Whatsapp': 'i-lucide-phone',\n 'Channel::Api': 'i-lucide-webhook',\n 'Channel::Email': 'i-lucide-mail',\n 'Channel::Telegram': 'i-lucide-send',\n };\n return icons[channelType] || 'i-lucide-inbox';\n};\n\nconst getChannelName = channelType => {\n return channelType?.replace('Channel::', '') || 'Desconhecido';\n};\n</script>\n\n<template>\n <SettingsLayout\n :is-loading=\"false\"\n :no-records-found=\"!inboxes.length\"\n no-records-message=\"Nenhuma caixa de entrada encontrada\"\n >\n <template #header>\n <BaseSettingsHeader\n title=\"Agentes Jasmine AI\"\n description=\"Gerencie seus agentes de IA SDR. Selecione uma caixa de entrada para configurar sua base de conhecimento.\"\n />\n </template>\n\n <template #body>\n <div class=\"grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3\">\n <div\n v-for=\"inbox in inboxes\"\n :key=\"inbox.id\"\n class=\"flex flex-col p-6 m-[1px] outline outline-n-container outline-1 bg-n-alpha-3 rounded-md shadow cursor-pointer hover:shadow-md hover:outline-n-blue-7 transition-all\"\n @click=\"openInbox(inbox.id)\"\n >\n <!-- Icon and Status -->\n <div class=\"flex items-start justify-between mb-4\">\n <div\n class=\"flex items-center justify-center size-12 rounded-lg bg-n-blue-2\"\n >\n <span\n class=\"size-6 text-n-blue-text\"\n:class=\"[\n :class=\"\n[getChannelIcon(inbox.channel_type)]\"\n />\n </div>\n <span\n v-tooltip=\"'Ativo'\"\n class=\"text-white p-0.5 rounded-full size-5 flex items-center justify-center bg-n-teal-9\"\n >\n <i class=\"i-ph-check-bold text-sm\" />\n </span>\n </div>\n\n <!-- Name and Configure -->\n <div class=\"flex justify-between items-center mb-2\">\n <span class=\"text-base font-semibold text-n-slate-12\">{{\n inbox.name\n }}</span>\n <Button label=\"Configurar\" link @click.stop=\"openInbox(inbox.id)\" />\n </div>\n\n <!-- Description -->\n <p class=\"text-sm text-n-slate-11\">\n Canal {{ getChannelName(inbox.channel_type) }}{{$t(` configurado para\n Jasmine AI\n `)}}"}}]}],"suppressedMessages":[],"errorCount":8,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst router = useRouter();\nconst getters = useStoreGetters();\n\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst openInbox = inboxId => {\n router.push({\n name: 'jasmine_inbox_dashboard',\n params: { inboxId },\n });\n};\n\nconst getChannelIcon = channelType => {\n const icons = {\n 'Channel::WebWidget': 'i-lucide-message-square',\n 'Channel::FacebookPage': 'i-lucide-facebook',\n 'Channel::TwitterProfile': 'i-lucide-twitter',\n 'Channel::Whatsapp': 'i-lucide-phone',\n 'Channel::Api': 'i-lucide-webhook',\n 'Channel::Email': 'i-lucide-mail',\n 'Channel::Telegram': 'i-lucide-send',\n };\n return icons[channelType] || 'i-lucide-inbox';\n};\n\nconst getChannelName = channelType => {\n return channelType?.replace('Channel::', '') || 'Desconhecido';\n};\n</script>\n\n<template>\n <SettingsLayout\n :is-loading=\"false\"\n :no-records-found=\"!inboxes.length\"\n no-records-message=\"Nenhuma caixa de entrada encontrada\"\n >\n <template #header>\n <BaseSettingsHeader\n title=\"Agentes Jasmine AI\"\n description=\"Gerencie seus agentes de IA SDR. Selecione uma caixa de entrada para configurar sua base de conhecimento.\"\n />\n </template>\n\n <template #body>\n <div class=\"grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3\">\n <div\n v-for=\"inbox in inboxes\"\n :key=\"inbox.id\"\n class=\"flex flex-col p-6 m-[1px] outline outline-n-container outline-1 bg-n-alpha-3 rounded-md shadow cursor-pointer hover:shadow-md hover:outline-n-blue-7 transition-all\"\n @click=\"openInbox(inbox.id)\"\n >\n <!-- Icon and Status -->\n <div class=\"flex items-start justify-between mb-4\">\n <div\n class=\"flex items-center justify-center size-12 rounded-lg bg-n-blue-2\"\n >\n <span\n class=\"size-6 text-n-blue-text\"\n:class=\"[\n :class=\"\n[getChannelIcon(inbox.channel_type)]\"\n />\n </div>\n <span\n v-tooltip=\"'Ativo'\"\n class=\"text-white p-0.5 rounded-full size-5 flex items-center justify-center bg-n-teal-9\"\n >\n <i class=\"i-ph-check-bold text-sm\" />\n </span>\n </div>\n\n <!-- Name and Configure -->\n <div class=\"flex justify-between items-center mb-2\">\n <span class=\"text-base font-semibold text-n-slate-12\">{{\n inbox.name\n }}</span>\n <Button label=\"Configurar\" link @click.stop=\"openInbox(inbox.id)\" />\n </div>\n\n <!-- Description -->\n <p class=\"text-sm text-n-slate-11\">\n Canal {{ getChannelName(inbox.channel_type) }} configurado para\n Jasmine AI\n </p>\n </div>\n </div>\n </template>\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/pages/JasminePlayground.vue","messages":[{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used in `title`.","line":66,"column":15,"nodeType":"VLiteral","messageId":"unexpectedInAttr","endLine":66,"endColumn":38},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":75,"column":73,"nodeType":"VText","messageId":"unexpected","endLine":77,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Selecione uma Inbox para testar\n ' is used","line":75,"column":73,"nodeType":null,"endLine":77,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2234],"text":"<i18n>\n{\n \"en\": {\n \"\\n Selecione uma Inbox para testar\\n \": \"\\n Selecione uma Inbox para testar\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">{{$t(`\n Selecione uma Inbox para testar\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":82,"column":35,"nodeType":"VText","messageId":"unexpected","endLine":82,"endColumn":55},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Escolha uma inbox...' is used","line":82,"column":35,"nodeType":null,"endLine":82,"endColumn":55,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2480],"text":"<i18n>\n{\n \"en\": {\n \"Escolha uma inbox...\": \"Escolha uma inbox...\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">{{$t('Escolha uma inbox...')}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":87,"column":72,"nodeType":"VText","messageId":"unexpected","endLine":90,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n ' is used","line":87,"column":72,"nodeType":null,"endLine":90,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2826],"text":"<i18n>\n{\n \"en\": {\n \"\\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\\n esta inbox\\n \": \"\\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\\n esta inbox\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">{{$t(`\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":105,"column":18,"nodeType":"VText","messageId":"unexpected","endLine":105,"endColumn":58},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Envie uma mensagem para testar a Jasmine' is used","line":105,"column":18,"nodeType":null,"endLine":105,"endColumn":58,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3390],"text":"<i18n>\n{\n \"en\": {\n \"Envie uma mensagem para testar a Jasmine\": \"Envie uma mensagem para testar a Jasmine\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n </p>\n </div>\n\n <!-- Chat Container -->\n <div\n v-if=\"selectedInboxId\"\n class=\"flex-1 flex flex-col border border-n-weak rounded-lg bg-n-solid-1 overflow-hidden\"\n >\n <!-- Messages -->\n <div class=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div\n v-if=\"messages.length === 0\"\n class=\"text-center text-n-slate-11 py-12\"\n >\n <span class=\"i-lucide-message-square size-12 mb-4 opacity-50\" />\n <p>{{$t('Envie uma mensagem para testar a Jasmine')}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":106,"column":39,"nodeType":"VText","messageId":"unexpected","endLine":108,"endColumn":15},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Experimente: \"Olá\", \"Quanto custa?\", \"Como funciona?\"\n ' is used","line":106,"column":39,"nodeType":null,"endLine":108,"endColumn":15,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3518],"text":"<i18n>\n{\n \"en\": {\n \"\\n Experimente: \\\"Olá\\\", \\\"Quanto custa?\\\", \\\"Como funciona?\\\"\\n \": \"\\n Experimente: \\\"Olá\\\", \\\"Quanto custa?\\\", \\\"Como funciona?\\\"\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n </p>\n </div>\n\n <!-- Chat Container -->\n <div\n v-if=\"selectedInboxId\"\n class=\"flex-1 flex flex-col border border-n-weak rounded-lg bg-n-solid-1 overflow-hidden\"\n >\n <!-- Messages -->\n <div class=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div\n v-if=\"messages.length === 0\"\n class=\"text-center text-n-slate-11 py-12\"\n >\n <span class=\"i-lucide-message-square size-12 mb-4 opacity-50\" />\n <p>Envie uma mensagem para testar a Jasmine</p>\n <p class=\"text-xs mt-2\">{{$t(`\n Experimente: \"Olá\", \"Quanto custa?\", \"Como funciona?\"\n `)}}"}}]},{"ruleId":"vue/html-closing-bracket-newline","severity":1,"message":"Expected no line breaks before closing bracket, but 1 line break found.","line":128,"column":40,"nodeType":"VStartTag","messageId":"expectedBeforeClosingBracket","endLine":129,"endColumn":19,"fix":{"range":[4270,4289],"text":""}},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":129,"column":41,"nodeType":"VText","messageId":"unexpected","endLine":130,"endColumn":19},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' | temp:\n ' is used","line":129,"column":41,"nodeType":null,"endLine":130,"endColumn":19,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4338],"text":"<i18n>\n{\n \"en\": {\n \" | temp:\\n \": \" | temp:\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n </p>\n </div>\n\n <!-- Chat Container -->\n <div\n v-if=\"selectedInboxId\"\n class=\"flex-1 flex flex-col border border-n-weak rounded-lg bg-n-solid-1 overflow-hidden\"\n >\n <!-- Messages -->\n <div class=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div\n v-if=\"messages.length === 0\"\n class=\"text-center text-n-slate-11 py-12\"\n >\n <span class=\"i-lucide-message-square size-12 mb-4 opacity-50\" />\n <p>Envie uma mensagem para testar a Jasmine</p>\n <p class=\"text-xs mt-2\">\n Experimente: \"Olá\", \"Quanto custa?\", \"Como funciona?\"\n </p>\n </div>\n\n <div\n v-for=\"(msg, index) in messages\"\n :key=\"index\"\n class=\"max-w-[80%] rounded-lg p-3\"\n :class=\"[\n msg.role === 'user'\n ? 'ml-auto bg-n-blue-9 text-white'\n : msg.role === 'error'\n ? 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400'\n : 'bg-n-alpha-3 text-n-slate-12',\n ]\"\n >\n <p class=\"text-sm whitespace-pre-wrap\">{{ msg.content }}</p>\n <div\n v-if=\"msg.debug\"\n class=\"mt-2 pt-2 border-t border-n-weak text-xs text-n-slate-11\"\n >\n <span class=\"font-mono\"\n >{{ msg.debug.model }}{{$t(` | temp:\n `)}}"}}]},{"ruleId":"vue/html-closing-bracket-newline","severity":1,"message":"Expected no line breaks before closing bracket, but 1 line break found.","line":130,"column":52,"nodeType":"VEndTag","messageId":"expectedBeforeClosingBracket","endLine":131,"endColumn":17,"fix":{"range":[4371,4388],"text":""}},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":140,"column":37,"nodeType":"VText","messageId":"unexpected","endLine":140,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Jasmine está pensando...' is used","line":140,"column":37,"nodeType":null,"endLine":140,"endColumn":61,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4684],"text":"<i18n>\n{\n \"en\": {\n \"Jasmine está pensando...\": \"Jasmine está pensando...\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n </p>\n </div>\n\n <!-- Chat Container -->\n <div\n v-if=\"selectedInboxId\"\n class=\"flex-1 flex flex-col border border-n-weak rounded-lg bg-n-solid-1 overflow-hidden\"\n >\n <!-- Messages -->\n <div class=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div\n v-if=\"messages.length === 0\"\n class=\"text-center text-n-slate-11 py-12\"\n >\n <span class=\"i-lucide-message-square size-12 mb-4 opacity-50\" />\n <p>Envie uma mensagem para testar a Jasmine</p>\n <p class=\"text-xs mt-2\">\n Experimente: \"Olá\", \"Quanto custa?\", \"Como funciona?\"\n </p>\n </div>\n\n <div\n v-for=\"(msg, index) in messages\"\n :key=\"index\"\n class=\"max-w-[80%] rounded-lg p-3\"\n :class=\"[\n msg.role === 'user'\n ? 'ml-auto bg-n-blue-9 text-white'\n : msg.role === 'error'\n ? 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400'\n : 'bg-n-alpha-3 text-n-slate-12',\n ]\"\n >\n <p class=\"text-sm whitespace-pre-wrap\">{{ msg.content }}</p>\n <div\n v-if=\"msg.debug\"\n class=\"mt-2 pt-2 border-t border-n-weak text-xs text-n-slate-11\"\n >\n <span class=\"font-mono\"\n >{{ msg.debug.model }} | temp:\n {{ msg.debug.temperature }}</span\n >\n </div>\n </div>\n\n <div\n v-if=\"isLoading\"\n class=\"flex items-center gap-2 text-n-slate-11\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n <span class=\"text-sm\">{{$t('Jasmine está pensando...')}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used in `placeholder`.","line":151,"column":29,"nodeType":"VLiteral","messageId":"unexpectedInAttr","endLine":151,"endColumn":62},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":179,"column":16,"nodeType":"VText","messageId":"unexpected","endLine":179,"endColumn":63},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Selecione uma inbox acima para começar a testar' is used","line":179,"column":16,"nodeType":null,"endLine":179,"endColumn":63,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,5996],"text":"<i18n>\n{\n \"en\": {\n \"Selecione uma inbox acima para começar a testar\": \"Selecione uma inbox acima para começar a testar\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n </p>\n </div>\n\n <!-- Chat Container -->\n <div\n v-if=\"selectedInboxId\"\n class=\"flex-1 flex flex-col border border-n-weak rounded-lg bg-n-solid-1 overflow-hidden\"\n >\n <!-- Messages -->\n <div class=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div\n v-if=\"messages.length === 0\"\n class=\"text-center text-n-slate-11 py-12\"\n >\n <span class=\"i-lucide-message-square size-12 mb-4 opacity-50\" />\n <p>Envie uma mensagem para testar a Jasmine</p>\n <p class=\"text-xs mt-2\">\n Experimente: \"Olá\", \"Quanto custa?\", \"Como funciona?\"\n </p>\n </div>\n\n <div\n v-for=\"(msg, index) in messages\"\n :key=\"index\"\n class=\"max-w-[80%] rounded-lg p-3\"\n :class=\"[\n msg.role === 'user'\n ? 'ml-auto bg-n-blue-9 text-white'\n : msg.role === 'error'\n ? 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400'\n : 'bg-n-alpha-3 text-n-slate-12',\n ]\"\n >\n <p class=\"text-sm whitespace-pre-wrap\">{{ msg.content }}</p>\n <div\n v-if=\"msg.debug\"\n class=\"mt-2 pt-2 border-t border-n-weak text-xs text-n-slate-11\"\n >\n <span class=\"font-mono\"\n >{{ msg.debug.model }} | temp:\n {{ msg.debug.temperature }}</span\n >\n </div>\n </div>\n\n <div\n v-if=\"isLoading\"\n class=\"flex items-center gap-2 text-n-slate-11\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n <span class=\"text-sm\">Jasmine está pensando...</span>\n </div>\n </div>\n\n <!-- Input -->\n <div class=\"border-t border-n-weak p-4\">\n <div class=\"flex gap-2\">\n <input\n v-model=\"inputMessage\"\n type=\"text\"\n class=\"flex-1 px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n placeholder=\"Digite uma mensagem de teste...\"\n :disabled=\"isLoading\"\n @keyup.enter=\"sendMessage\"\n />\n <Button\n icon=\"i-lucide-send\"\n :disabled=\"isLoading || !inputMessage.trim()\"\n @click=\"sendMessage\"\n />\n <Button\n v-tooltip=\"'Limpar conversa'\"\n icon=\"i-lucide-trash-2\"\n faded\n slate\n :disabled=\"messages.length === 0\"\n @click=\"clearChat\"\n />\n </div>\n </div>\n </div>\n\n <!-- No inbox selected -->\n <div\n v-else\n class=\"flex-1 flex items-center justify-center text-n-slate-11\"\n >\n <div class=\"text-center\">\n <span class=\"i-lucide-inbox size-16 mb-4 opacity-30\" />\n <p>{{$t('Selecione uma inbox acima para começar a testar')}}"}}]}],"suppressedMessages":[],"errorCount":10,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":2,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\n\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\n\n// State\nconst selectedInboxId = ref(null);\nconst messages = ref([]);\nconst inputMessage = ref('');\nconst isLoading = ref(false);\n\n// Computed\nconst inboxes = computed(() => getters['inboxes/getInboxes'].value);\n\nconst selectedInbox = computed(() => {\n if (!selectedInboxId.value) return null;\n return inboxes.value.find(i => i.id === selectedInboxId.value);\n});\n\n// Methods\nconst sendMessage = async () => {\n if (!inputMessage.value.trim() || !selectedInboxId.value) return;\n\n const userMessage = inputMessage.value.trim();\n messages.value.push({ role: 'user', content: userMessage });\n inputMessage.value = '';\n isLoading.value = true;\n\n try {\n const { data } = await JasmineAPI.testPlayground(\n selectedInboxId.value,\n userMessage\n );\n\n messages.value.push({\n role: 'assistant',\n content: data.response,\n debug: data.debug,\n });\n } catch (error) {\n const errorMsg =\n error.response?.data?.error || 'Erro ao processar mensagem';\n messages.value.push({ role: 'error', content: errorMsg });\n useAlert(errorMsg);\n } finally {\n isLoading.value = false;\n }\n};\n\nconst clearChat = () => {\n messages.value = [];\n};\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"false\">\n <template #header>\n <BaseSettingsHeader\n title=\"Playground Jasmine AI\"\n description=\"Teste as respostas da Jasmine em tempo real antes de ativar para os clientes.\"\n />\n </template>\n\n <template #body>\n <div class=\"flex flex-col h-[calc(100vh-200px)] max-w-4xl\">\n <!-- Inbox Selector -->\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-n-slate-12 mb-2\">\n Selecione uma Inbox para testar\n </label>\n <select\n v-model=\"selectedInboxId\"\n class=\"w-full max-w-md px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n >\n <option :value=\"null\">Escolha uma inbox...</option>\n <option v-for=\"inbox in inboxes\" :key=\"inbox.id\" :value=\"inbox.id\">\n {{ inbox.name }}\n </option>\n </select>\n <p v-if=\"selectedInbox\" class=\"text-xs text-n-slate-11 mt-1\">\n ⚠️ Certifique-se de que a Jasmine está ativada e configurada para\n esta inbox\n </p>\n </div>\n\n <!-- Chat Container -->\n <div\n v-if=\"selectedInboxId\"\n class=\"flex-1 flex flex-col border border-n-weak rounded-lg bg-n-solid-1 overflow-hidden\"\n >\n <!-- Messages -->\n <div class=\"flex-1 overflow-y-auto p-4 space-y-4\">\n <div\n v-if=\"messages.length === 0\"\n class=\"text-center text-n-slate-11 py-12\"\n >\n <span class=\"i-lucide-message-square size-12 mb-4 opacity-50\" />\n <p>Envie uma mensagem para testar a Jasmine</p>\n <p class=\"text-xs mt-2\">\n Experimente: \"Olá\", \"Quanto custa?\", \"Como funciona?\"\n </p>\n </div>\n\n <div\n v-for=\"(msg, index) in messages\"\n :key=\"index\"\n class=\"max-w-[80%] rounded-lg p-3\"\n :class=\"[\n msg.role === 'user'\n ? 'ml-auto bg-n-blue-9 text-white'\n : msg.role === 'error'\n ? 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400'\n : 'bg-n-alpha-3 text-n-slate-12',\n ]\"\n >\n <p class=\"text-sm whitespace-pre-wrap\">{{ msg.content }}</p>\n <div\n v-if=\"msg.debug\"\n class=\"mt-2 pt-2 border-t border-n-weak text-xs text-n-slate-11\"\n >\n <span class=\"font-mono\"\n >{{ msg.debug.model }} | temp:\n {{ msg.debug.temperature }}</span\n >\n </div>\n </div>\n\n <div\n v-if=\"isLoading\"\n class=\"flex items-center gap-2 text-n-slate-11\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n <span class=\"text-sm\">Jasmine está pensando...</span>\n </div>\n </div>\n\n <!-- Input -->\n <div class=\"border-t border-n-weak p-4\">\n <div class=\"flex gap-2\">\n <input\n v-model=\"inputMessage\"\n type=\"text\"\n class=\"flex-1 px-3 py-2 text-sm rounded-lg border border-n-weak bg-n-solid-1 text-n-slate-12\"\n placeholder=\"Digite uma mensagem de teste...\"\n :disabled=\"isLoading\"\n @keyup.enter=\"sendMessage\"\n />\n <Button\n icon=\"i-lucide-send\"\n :disabled=\"isLoading || !inputMessage.trim()\"\n @click=\"sendMessage\"\n />\n <Button\n v-tooltip=\"'Limpar conversa'\"\n icon=\"i-lucide-trash-2\"\n faded\n slate\n :disabled=\"messages.length === 0\"\n @click=\"clearChat\"\n />\n </div>\n </div>\n </div>\n\n <!-- No inbox selected -->\n <div\n v-else\n class=\"flex-1 flex items-center justify-center text-n-slate-11\"\n >\n <div class=\"text-center\">\n <span class=\"i-lucide-inbox size-16 mb-4 opacity-30\" />\n <p>Selecione uma inbox acima para começar a testar</p>\n </div>\n </div>\n </div>\n </template>\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/jasmine/pages/JasmineWrapper.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/noAccounts/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/notifications/components/NotificationTable.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`NOTIFICATIONS_PAGE.TYPE_LABEL.${notificationItem.notification_type}`' dynamic key is used'","line":103,"column":17,"nodeType":"CallExpression","endLine":105,"endColumn":18}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport Avatar from 'next/avatar/Avatar.vue';\nimport Spinner from 'shared/components/Spinner.vue';\nimport EmptyState from 'dashboard/components/widgets/EmptyState.vue';\nimport { dynamicTime } from 'shared/helpers/timeHelper';\nimport { mapGetters } from 'vuex';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n Avatar,\n Spinner,\n EmptyState,\n NextButton,\n },\n props: {\n notifications: {\n type: Array,\n default: () => [],\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n isUpdating: {\n type: Boolean,\n default: false,\n },\n onClickNotification: {\n type: Function,\n default: () => {},\n },\n onMarkAllDoneClick: {\n type: Function,\n default: () => {},\n },\n },\n computed: {\n ...mapGetters({\n notificationMetadata: 'notifications/getMeta',\n }),\n showEmptyResult() {\n return !this.isLoading && this.notifications.length === 0;\n },\n },\n methods: {\n dynamicTime,\n },\n};\n</script>\n\n<template>\n <section\n class=\"flex-grow flex-shrink h-full px-4 py-8 overflow-hidden bg-n-background\"\n >\n <div class=\"flex w-full items-center justify-between gap-2 mb-4\">\n <h6 class=\"text-xl font-medium text-n-slate-12\">\n {{ $t('NOTIFICATIONS_PAGE.HEADER') }}\n </h6>\n <NextButton\n v-if=\"notificationMetadata.unreadCount\"\n type=\"submit\"\n sm\n :label=\"$t('NOTIFICATIONS_PAGE.MARK_ALL_DONE')\"\n :is-loading=\"isUpdating\"\n @click=\"onMarkAllDoneClick\"\n />\n </div>\n <table class=\"notifications-table overflow-auto\">\n <tbody v-show=\"!isLoading\">\n <tr\n v-for=\"notificationItem in notifications\"\n :key=\"notificationItem.id\"\n :class=\"{\n 'is-unread': notificationItem.read_at === null,\n }\"\n class=\"border-b border-n-weak\"\n @click=\"() => onClickNotification(notificationItem)\"\n >\n <td class=\"p-2.5 text-n-slate-12\">\n <div\n class=\"overflow-hidden flex-view notification-contant--wrap whitespace-nowrap text-ellipsis\"\n >\n <h5 class=\"notification--title\">\n {{\n `#${\n notificationItem.primary_actor\n ? notificationItem.primary_actor.id\n : $t(`NOTIFICATIONS_PAGE.DELETE_TITLE`)\n }`\n }}\n </h5>\n <span\n class=\"overflow-hidden notification--message-title whitespace-nowrap text-ellipsis\"\n >\n {{ notificationItem.push_message_title }}\n </span>\n </div>\n </td>\n <td class=\"text-right\">\n <span class=\"notification--type\">\n {{\n $t(\n `NOTIFICATIONS_PAGE.TYPE_LABEL.${notificationItem.notification_type}`\n )\n }}\n </span>\n </td>\n <td class=\"thumbnail--column\">\n <Avatar\n v-if=\"notificationItem.primary_actor.meta.assignee\"\n :src=\"notificationItem.primary_actor.meta.assignee.thumbnail\"\n :size=\"28\"\n :name=\"notificationItem.primary_actor.meta.assignee.name\"\n rounded-full\n />\n </td>\n <td>\n <div class=\"text-right timestamp--column ltr:mr-2 rtl:ml-2\">\n <span class=\"notification--created-at\">\n {{ dynamicTime(notificationItem.last_activity_at) }}\n </span>\n </div>\n </td>\n <td>\n <div\n v-if=\"!notificationItem.read_at\"\n class=\"notification--unread-indicator\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n <EmptyState\n v-if=\"showEmptyResult\"\n :title=\"$t('NOTIFICATIONS_PAGE.LIST.404')\"\n />\n <div v-if=\"isLoading\" class=\"notifications--loader\">\n <Spinner />\n <span>{{ $t('NOTIFICATIONS_PAGE.LIST.LOADING_MESSAGE') }}</span>\n </div>\n </section>\n</template>\n\n<style lang=\"scss\" scoped>\n.notification--title {\n @apply text-sm m-0 text-n-slate-12;\n}\n\n.notifications-table {\n > tbody {\n > tr {\n @apply cursor-pointer;\n\n &:hover {\n @apply bg-n-slate-3;\n }\n\n &.is-active {\n @apply bg-n-slate-4 dark:bg-n-slate-6;\n }\n\n > td {\n &.conversation-count-item {\n @apply pl-6 rtl:pl-0 rtl:pr-6;\n }\n }\n\n &:last-child {\n @apply border-b-0;\n }\n }\n }\n}\n\n.is-unread {\n @apply font-semibold;\n}\n\n.notifications--loader {\n @apply text-base flex items-center justify-center p-10;\n}\n\n.notification--unread-indicator {\n @apply w-2.5 h-2.5 rounded-full bg-n-brand;\n}\n\n.notification--created-at {\n @apply text-n-slate-11 text-xs;\n}\n\n.notification--type {\n @apply text-xs;\n}\n\n.thumbnail--column {\n @apply w-[3.25rem];\n}\n\n.timestamp--column {\n @apply min-w-[9.125rem] text-right;\n}\n\n.notification-contant--wrap {\n @apply flex-col max-w-[31.25rem];\n}\n\n.notification--message-title {\n @apply text-n-slate-12;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/notifications/components/NotificationsView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/notifications/routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/SettingsHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/SettingsLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/SettingsSubPageHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/SettingsWrapper.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/Wrapper.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'headerTitle' dynamic key is used'","line":30,"column":24,"nodeType":"CallExpression","endLine":30,"endColumn":38}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport SettingsHeader from './SettingsHeader.vue';\nconst props = defineProps({\n headerTitle: { type: String, default: '' },\n icon: { type: String, default: '' },\n keepAlive: { type: Boolean, default: true },\n showBackButton: { type: Boolean, default: false },\n backUrl: { type: [String, Object], default: '' },\n fullWidth: { type: Boolean, default: false },\n});\n\nconst { t } = useI18n();\n\nconst showSettingsHeader = computed(\n () => props.headerTitle || props.icon || props.showBackButton\n);\n</script>\n\n<template>\n <div class=\"flex flex-1 flex-col m-0 bg-n-background overflow-auto\">\n <div\n class=\"mx-auto w-full flex flex-col flex-1\"\n :class=\"{ 'max-w-6xl': !fullWidth }\"\n >\n <SettingsHeader\n v-if=\"showSettingsHeader\"\n :icon=\"icon\"\n :header-title=\"t(headerTitle)\"\n :show-back-button=\"showBackButton\"\n :back-url=\"backUrl\"\n class=\"sticky top-0 z-20\"\n :class=\"{ 'max-w-6xl w-full mx-auto': fullWidth }\"\n />\n\n <router-view v-slot=\"{ Component }\" class=\"px-5 flex-1 overflow-hidden\">\n <component :is=\"Component\" v-if=\"!keepAlive\" :key=\"$route.fullPath\" />\n <keep-alive v-else>\n <component :is=\"Component\" :key=\"$route.fullPath\" />\n </keep-alive>\n </router-view>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/account.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/components/AccountDelete.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/components/AccountId.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/components/AudioTranscription.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/components/AutoResolve.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/components/BuildInfo.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/account/components/SectionLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agentBots/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agentBots/agentBot.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agentBots/components/AgentBotModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agents/AddAgent.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agents/EditAgent.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agents/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AGENT_MGMT.AGENT_TYPES.${agent.role.toUpperCase()}`' dynamic key is used'","line":54,"column":12,"nodeType":"CallExpression","endLine":54,"endColumn":67},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CUSTOM_ROLE.PERMISSIONS.${permission.toUpperCase()}`' dynamic key is used'","line":209,"column":27,"nodeType":"CallExpression","endLine":211,"endColumn":28}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useAlert } from 'dashboard/composables';\nimport { computed, onMounted, ref } from 'vue';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport { useI18n } from 'vue-i18n';\nimport {\n useStoreGetters,\n useStore,\n useMapGetter,\n} from 'dashboard/composables/store';\n\nimport AddAgent from './AddAgent.vue';\nimport EditAgent from './EditAgent.vue';\nimport BaseSettingsHeader from '../components/BaseSettingsHeader.vue';\nimport SettingsLayout from '../SettingsLayout.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst getters = useStoreGetters();\nconst store = useStore();\nconst { t } = useI18n();\n\nconst loading = ref({});\nconst showAddPopup = ref(false);\nconst showDeletePopup = ref(false);\nconst showEditPopup = ref(false);\nconst agentAPI = ref({ message: '' });\nconst currentAgent = ref({});\n\nconst deleteConfirmText = computed(\n () => `${t('AGENT_MGMT.DELETE.CONFIRM.YES')} ${currentAgent.value.name}`\n);\nconst deleteRejectText = computed(() => {\n return `${t('AGENT_MGMT.DELETE.CONFIRM.NO')} ${currentAgent.value.name}`;\n});\nconst deleteMessage = computed(() => {\n return ` ${currentAgent.value.name}?`;\n});\n\nconst agentList = computed(() => getters['agents/getAgents'].value);\nconst uiFlags = computed(() => getters['agents/getUIFlags'].value);\nconst currentUserId = computed(() => getters.getCurrentUserID.value);\nconst customRoles = useMapGetter('customRole/getCustomRoles');\n\nonMounted(() => {\n store.dispatch('agents/get');\n store.dispatch('customRole/getCustomRole');\n});\n\nconst findCustomRole = agent =>\n customRoles.value.find(role => role.id === agent.custom_role_id);\n\nconst getAgentRoleName = agent => {\n if (!agent.custom_role_id) {\n return t(`AGENT_MGMT.AGENT_TYPES.${agent.role.toUpperCase()}`);\n }\n const customRole = findCustomRole(agent);\n return customRole ? customRole.name : '';\n};\n\nconst getAgentRolePermissions = agent => {\n if (!agent.custom_role_id) {\n return [];\n }\n const customRole = findCustomRole(agent);\n return customRole?.permissions || [];\n};\n\nconst verifiedAdministrators = computed(() => {\n return agentList.value.filter(\n agent => agent.role === 'administrator' && agent.confirmed\n );\n});\n\nconst showEditAction = agent => {\n return currentUserId.value !== agent.id;\n};\n\nconst showDeleteAction = agent => {\n if (currentUserId.value === agent.id) {\n return false;\n }\n\n if (!agent.confirmed) {\n return true;\n }\n\n if (agent.role === 'administrator') {\n return verifiedAdministrators.value.length !== 1;\n }\n return true;\n};\n\nconst showAlertMessage = message => {\n loading.value[currentAgent.value.id] = false;\n currentAgent.value = {};\n agentAPI.value.message = message;\n useAlert(message);\n};\n\nconst openAddPopup = () => {\n showAddPopup.value = true;\n};\nconst hideAddPopup = () => {\n showAddPopup.value = false;\n};\n\nconst openEditPopup = agent => {\n showEditPopup.value = true;\n currentAgent.value = agent;\n};\nconst hideEditPopup = () => {\n showEditPopup.value = false;\n};\n\nconst openDeletePopup = agent => {\n showDeletePopup.value = true;\n currentAgent.value = agent;\n};\nconst closeDeletePopup = () => {\n showDeletePopup.value = false;\n};\n\nconst deleteAgent = async id => {\n try {\n await store.dispatch('agents/delete', id);\n showAlertMessage(t('AGENT_MGMT.DELETE.API.SUCCESS_MESSAGE'));\n } catch (error) {\n showAlertMessage(t('AGENT_MGMT.DELETE.API.ERROR_MESSAGE'));\n }\n};\nconst confirmDeletion = () => {\n loading.value[currentAgent.value.id] = true;\n closeDeletePopup();\n deleteAgent(currentAgent.value.id);\n};\n</script>\n\n<template>\n <SettingsLayout\n :is-loading=\"uiFlags.isFetching\"\n :loading-message=\"$t('AGENT_MGMT.LOADING')\"\n :no-records-found=\"!agentList.length\"\n :no-records-message=\"$t('AGENT_MGMT.LIST.404')\"\n >\n <template #header>\n <BaseSettingsHeader\n :title=\"$t('AGENT_MGMT.HEADER')\"\n :description=\"$t('AGENT_MGMT.DESCRIPTION')\"\n :link-text=\"$t('AGENT_MGMT.LEARN_MORE')\"\n feature-name=\"agents\"\n >\n <template #actions>\n <Button\n icon=\"i-lucide-circle-plus\"\n :label=\"$t('AGENT_MGMT.HEADER_BTN_TXT')\"\n @click=\"openAddPopup\"\n />\n </template>\n </BaseSettingsHeader>\n </template>\n <template #body>\n <table class=\"divide-y divide-n-weak\">\n <tbody class=\"divide-y divide-n-weak text-n-slate-11\">\n <tr v-for=\"(agent, index) in agentList\" :key=\"agent.email\">\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div class=\"flex flex-row items-center gap-4\">\n <Avatar\n :src=\"agent.thumbnail\"\n :name=\"agent.name\"\n :status=\"agent.availability_status\"\n :size=\"40\"\n hide-offline-status\n rounded-full\n />\n <div>\n <span class=\"block font-medium capitalize\">\n {{ agent.name }}\n </span>\n <span>{{ agent.email }}</span>\n </div>\n </div>\n </td>\n\n <td class=\"relative py-4 ltr:pr-4 rtl:pl-4\">\n <span\n class=\"block font-medium w-fit\"\n :class=\"{\n 'hover:text-gray-900 group cursor-pointer':\n agent.custom_role_id,\n }\"\n >\n {{ getAgentRoleName(agent) }}\n\n <div\n class=\"absolute left-0 z-10 hidden max-w-[300px] w-auto bg-white rounded-xl border border-n-weak shadow-lg top-14 md:top-12 dark:bg-n-solid-2\"\n :class=\"{ 'group-hover:block': agent.custom_role_id }\"\n >\n <div class=\"flex flex-col gap-1 p-4\">\n <span class=\"font-semibold\">\n {{ $t('AGENT_MGMT.LIST.AVAILABLE_CUSTOM_ROLE') }}\n </span>\n <ul class=\"pl-4 mb-0 list-disc\">\n <li\n v-for=\"permission in getAgentRolePermissions(agent)\"\n :key=\"permission\"\n class=\"font-normal\"\n >\n {{\n $t(\n `CUSTOM_ROLE.PERMISSIONS.${permission.toUpperCase()}`\n )\n }}\n </li>\n </ul>\n </div>\n </div>\n </span>\n </td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <span v-if=\"agent.confirmed\">\n {{ $t('AGENT_MGMT.LIST.VERIFIED') }}\n </span>\n <span v-if=\"!agent.confirmed\">\n {{ $t('AGENT_MGMT.LIST.VERIFICATION_PENDING') }}\n </span>\n </td>\n <td class=\"py-4\">\n <div class=\"flex justify-end gap-1\">\n <Button\n v-if=\"showEditAction(agent)\"\n v-tooltip.top=\"$t('AGENT_MGMT.EDIT.BUTTON_TEXT')\"\n icon=\"i-lucide-pen\"\n slate\n xs\n faded\n @click=\"openEditPopup(agent)\"\n />\n <Button\n v-if=\"showDeleteAction(agent)\"\n v-tooltip.top=\"$t('AGENT_MGMT.DELETE.BUTTON_TEXT')\"\n icon=\"i-lucide-trash-2\"\n xs\n ruby\n faded\n :is-loading=\"loading[agent.id]\"\n @click=\"openDeletePopup(agent, index)\"\n />\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </template>\n\n <woot-modal v-model:show=\"showAddPopup\" :on-close=\"hideAddPopup\">\n <AddAgent @close=\"hideAddPopup\" />\n </woot-modal>\n\n <woot-modal v-model:show=\"showEditPopup\" :on-close=\"hideEditPopup\">\n <EditAgent\n v-if=\"showEditPopup\"\n :id=\"currentAgent.id\"\n :name=\"currentAgent.name\"\n :provider=\"currentAgent.provider\"\n :type=\"currentAgent.role\"\n :email=\"currentAgent.email\"\n :availability=\"currentAgent.availability_status\"\n :custom-role-id=\"currentAgent.custom_role_id\"\n @close=\"hideEditPopup\"\n />\n </woot-modal>\n\n <woot-delete-modal\n v-model:show=\"showDeletePopup\"\n :on-close=\"closeDeletePopup\"\n :on-confirm=\"confirmDeletion\"\n :title=\"$t('AGENT_MGMT.DELETE.CONFIRM.TITLE')\"\n :message=\"$t('AGENT_MGMT.DELETE.CONFIRM.MESSAGE')\"\n :message-value=\"deleteMessage\"\n :confirm-text=\"deleteConfirmText\"\n :reject-text=\"deleteRejectText\"\n />\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/agents/agent.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/assignmentPolicy.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/AgentAssignmentCreatePage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/AgentAssignmentEditPage.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.INDEX.HEADER.TITLE`' dynamic key is used'","line":41,"column":12,"nodeType":"CallExpression","endLine":41,"endColumn":47},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.EDIT.HEADER.TITLE`' dynamic key is used'","line":44,"column":12,"nodeType":"CallExpression","endLine":44,"endColumn":46},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.API.SUCCESS_MESSAGE`' dynamic key is used'","line":92,"column":14,"nodeType":"CallExpression","endLine":92,"endColumn":63},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.API.ERROR_MESSAGE`' dynamic key is used'","line":99,"column":14,"nodeType":"CallExpression","endLine":99,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.EDIT.API.SUCCESS_MESSAGE`' dynamic key is used'","line":149,"column":14,"nodeType":"CallExpression","endLine":149,"endColumn":55},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.EDIT.API.ERROR_MESSAGE`' dynamic key is used'","line":151,"column":14,"nodeType":"CallExpression","endLine":151,"endColumn":53}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useAlert } from 'dashboard/composables';\nimport { getInboxIconByType } from 'dashboard/helper/inbox';\nimport {\n ROUND_ROBIN,\n EARLIEST_CREATED,\n} from 'dashboard/routes/dashboard/settings/assignmentPolicy/constants';\n\nimport Breadcrumb from 'dashboard/components-next/breadcrumb/Breadcrumb.vue';\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport AssignmentPolicyForm from 'dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/AgentAssignmentPolicyForm.vue';\nimport ConfirmInboxDialog from 'dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/ConfirmInboxDialog.vue';\n\nconst BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY';\n\nconst { t } = useI18n();\nconst route = useRoute();\nconst router = useRouter();\nconst store = useStore();\n\nconst uiFlags = useMapGetter('assignmentPolicies/getUIFlags');\nconst inboxes = useMapGetter('inboxes/getAllInboxes');\nconst inboxUiFlags = useMapGetter('assignmentPolicies/getInboxUiFlags');\nconst selectedPolicyById = useMapGetter(\n 'assignmentPolicies/getAssignmentPolicyById'\n);\n\nconst routeId = computed(() => route.params.id);\nconst selectedPolicy = computed(() => selectedPolicyById.value(routeId.value));\n\nconst confirmInboxDialogRef = ref(null);\n// Store the policy linked to the inbox when adding a new inbox\nconst inboxLinkedPolicy = ref(null);\n\nconst breadcrumbItems = computed(() => [\n {\n label: t(`${BASE_KEY}.INDEX.HEADER.TITLE`),\n routeName: 'agent_assignment_policy_index',\n },\n { label: t(`${BASE_KEY}.EDIT.HEADER.TITLE`) },\n]);\n\nconst buildInboxList = allInboxes =>\n allInboxes?.map(({ name, id, email, phoneNumber, channelType, medium }) => ({\n name,\n id,\n email,\n phoneNumber,\n icon: getInboxIconByType(channelType, medium, 'line'),\n })) || [];\n\nconst policyInboxes = computed(() =>\n buildInboxList(selectedPolicy.value?.inboxes)\n);\n\nconst inboxList = computed(() =>\n buildInboxList(\n inboxes.value?.slice().sort((a, b) => a.name.localeCompare(b.name))\n )\n);\n\nconst formData = computed(() => ({\n name: selectedPolicy.value?.name || '',\n description: selectedPolicy.value?.description || '',\n enabled: selectedPolicy.value?.enabled || false,\n assignmentOrder: selectedPolicy.value?.assignmentOrder || ROUND_ROBIN,\n conversationPriority:\n selectedPolicy.value?.conversationPriority || EARLIEST_CREATED,\n fairDistributionLimit: selectedPolicy.value?.fairDistributionLimit || 10,\n fairDistributionWindow: selectedPolicy.value?.fairDistributionWindow || 60,\n}));\n\nconst handleDeleteInbox = inboxId =>\n store.dispatch('assignmentPolicies/removeInboxPolicy', {\n policyId: selectedPolicy.value?.id,\n inboxId,\n });\n\nconst handleBreadcrumbClick = ({ routeName }) =>\n router.push({ name: routeName });\n\nconst setInboxPolicy = async (inboxId, policyId) => {\n try {\n await store.dispatch('assignmentPolicies/setInboxPolicy', {\n inboxId,\n policyId,\n });\n useAlert(t(`${BASE_KEY}.FORM.INBOXES.API.SUCCESS_MESSAGE`));\n await store.dispatch(\n 'assignmentPolicies/getInboxes',\n Number(routeId.value)\n );\n return true;\n } catch (error) {\n useAlert(t(`${BASE_KEY}.FORM.INBOXES.API.ERROR_MESSAGE`));\n return false;\n }\n};\n\nconst handleAddInbox = async inbox => {\n try {\n const policy = await store.dispatch('assignmentPolicies/getInboxPolicy', {\n inboxId: inbox?.id,\n });\n\n if (policy?.id !== selectedPolicy.value?.id) {\n inboxLinkedPolicy.value = {\n ...policy,\n assignedInboxCount: policy.assignedInboxCount - 1,\n };\n confirmInboxDialogRef.value.openDialog(inbox);\n return;\n }\n } catch (error) {\n // If getInboxPolicy fails, continue to setInboxPolicy\n }\n\n await setInboxPolicy(inbox?.id, selectedPolicy.value?.id);\n};\n\nconst handleConfirmAddInbox = async inboxId => {\n const success = await setInboxPolicy(inboxId, selectedPolicy.value?.id);\n\n if (success) {\n // Update the policy to reflect the assigned inbox count change\n await store.dispatch('assignmentPolicies/updateInboxPolicy', {\n policy: inboxLinkedPolicy.value,\n });\n // Fetch the updated inboxes for the policy after update, to reflect real-time changes\n store.dispatch(\n 'assignmentPolicies/getInboxes',\n inboxLinkedPolicy.value?.id\n );\n inboxLinkedPolicy.value = null;\n confirmInboxDialogRef.value.closeDialog();\n }\n};\n\nconst handleSubmit = async formState => {\n try {\n await store.dispatch('assignmentPolicies/update', {\n id: selectedPolicy.value?.id,\n ...formState,\n });\n useAlert(t(`${BASE_KEY}.EDIT.API.SUCCESS_MESSAGE`));\n } catch {\n useAlert(t(`${BASE_KEY}.EDIT.API.ERROR_MESSAGE`));\n }\n};\n\nconst fetchPolicyData = async () => {\n if (!routeId.value) return;\n\n // Fetch policy if not available\n if (!selectedPolicy.value?.id)\n await store.dispatch('assignmentPolicies/show', routeId.value);\n\n await store.dispatch('assignmentPolicies/getInboxes', Number(routeId.value));\n};\n\nwatch(routeId, fetchPolicyData, { immediate: true });\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"uiFlags.isFetchingItem\" class=\"xl:px-44\">\n <template #header>\n <div class=\"flex items-center gap-2 w-full justify-between\">\n <Breadcrumb :items=\"breadcrumbItems\" @click=\"handleBreadcrumbClick\" />\n </div>\n </template>\n\n <template #body>\n <AssignmentPolicyForm\n :key=\"routeId\"\n mode=\"EDIT\"\n :initial-data=\"formData\"\n :policy-inboxes=\"policyInboxes\"\n :inbox-list=\"inboxList\"\n show-inbox-section\n :is-loading=\"uiFlags.isUpdating\"\n :is-inbox-loading=\"inboxUiFlags.isFetching\"\n @submit=\"handleSubmit\"\n @add-inbox=\"handleAddInbox\"\n @delete-inbox=\"handleDeleteInbox\"\n />\n </template>\n\n <ConfirmInboxDialog\n ref=\"confirmInboxDialogRef\"\n @add=\"handleConfirmAddInbox\"\n />\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/AgentAssignmentIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/AgentCapacityCreatePage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/AgentCapacityEditPage.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.INDEX.HEADER.TITLE`' dynamic key is used'","line":37,"column":12,"nodeType":"CallExpression","endLine":37,"endColumn":47},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.EDIT.HEADER.TITLE`' dynamic key is used'","line":40,"column":12,"nodeType":"CallExpression","endLine":40,"endColumn":46},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.EDIT.API.SUCCESS_MESSAGE`' dynamic key is used'","line":141,"column":14,"nodeType":"CallExpression","endLine":141,"endColumn":55},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.EDIT.API.ERROR_MESSAGE`' dynamic key is used'","line":143,"column":14,"nodeType":"CallExpression","endLine":143,"endColumn":53}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, watch, onMounted } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useAlert } from 'dashboard/composables';\nimport camelcaseKeys from 'camelcase-keys';\nimport { getInboxIconByType } from 'dashboard/helper/inbox';\n\nimport Breadcrumb from 'dashboard/components-next/breadcrumb/Breadcrumb.vue';\nimport SettingsLayout from 'dashboard/routes/dashboard/settings/SettingsLayout.vue';\nimport AgentCapacityPolicyForm from 'dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/AgentCapacityPolicyForm.vue';\n\nconst BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY';\n\nconst { t } = useI18n();\nconst route = useRoute();\nconst router = useRouter();\nconst store = useStore();\n\nconst uiFlags = useMapGetter('agentCapacityPolicies/getUIFlags');\nconst usersUiFlags = useMapGetter('agentCapacityPolicies/getUsersUIFlags');\nconst selectedPolicyById = useMapGetter(\n 'agentCapacityPolicies/getAgentCapacityPolicyById'\n);\nconst agentsList = useMapGetter('agents/getAgents');\nconst labelsList = useMapGetter('labels/getLabels');\nconst inboxes = useMapGetter('inboxes/getAllInboxes');\nconst inboxesUiFlags = useMapGetter('inboxes/getUIFlags');\n\nconst routeId = computed(() => route.params.id);\nconst selectedPolicy = computed(() => selectedPolicyById.value(routeId.value));\nconst selectedPolicyId = computed(() => selectedPolicy.value?.id);\n\nconst breadcrumbItems = computed(() => [\n {\n label: t(`${BASE_KEY}.INDEX.HEADER.TITLE`),\n routeName: 'agent_capacity_policy_index',\n },\n { label: t(`${BASE_KEY}.EDIT.HEADER.TITLE`) },\n]);\n\nconst buildList = items =>\n items?.map(({ name, title, id, email, avatarUrl, thumbnail, color }) => ({\n name: name || title,\n id,\n email,\n avatarUrl: avatarUrl || thumbnail,\n color,\n })) || [];\n\nconst policyUsers = computed(() => buildList(selectedPolicy.value?.users));\n\nconst allAgents = computed(() =>\n buildList(camelcaseKeys(agentsList.value)).filter(\n agent => !policyUsers.value?.some(user => user.id === agent.id)\n )\n);\n\nconst allLabels = computed(() => buildList(labelsList.value));\n\nconst allInboxes = computed(\n () =>\n inboxes.value\n ?.slice()\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(({ name, id, email, phoneNumber, channelType, medium }) => ({\n name,\n id,\n email,\n phoneNumber,\n icon: getInboxIconByType(channelType, medium, 'line'),\n })) || []\n);\n\nconst formData = computed(() => ({\n name: selectedPolicy.value?.name || '',\n description: selectedPolicy.value?.description || '',\n exclusionRules: {\n excludedLabels: [\n ...(selectedPolicy.value?.exclusionRules?.excludedLabels || []),\n ],\n excludeOlderThanHours:\n selectedPolicy.value?.exclusionRules?.excludeOlderThanHours || 10,\n },\n inboxCapacityLimits:\n selectedPolicy.value?.inboxCapacityLimits?.map(limit => ({\n ...limit,\n })) || [],\n}));\n\nconst handleBreadcrumbClick = ({ routeName }) =>\n router.push({ name: routeName });\n\nconst handleDeleteUser = agentId => {\n store.dispatch('agentCapacityPolicies/removeUser', {\n policyId: selectedPolicyId.value,\n userId: agentId,\n });\n};\n\nconst handleAddUser = agent => {\n store.dispatch('agentCapacityPolicies/addUser', {\n policyId: selectedPolicyId.value,\n userData: { id: agent.id, capacity: 20 },\n });\n};\n\nconst handleDeleteInboxLimit = limitId => {\n store.dispatch('agentCapacityPolicies/deleteInboxLimit', {\n policyId: selectedPolicyId.value,\n limitId,\n });\n};\n\nconst handleAddInboxLimit = limit => {\n store.dispatch('agentCapacityPolicies/createInboxLimit', {\n policyId: selectedPolicyId.value,\n limitData: {\n inboxId: limit.inboxId,\n conversationLimit: limit.conversationLimit,\n },\n });\n};\n\nconst handleLimitChange = limit => {\n store.dispatch('agentCapacityPolicies/updateInboxLimit', {\n policyId: selectedPolicyId.value,\n limitId: limit.id,\n limitData: { conversationLimit: limit.conversationLimit },\n });\n};\n\nconst handleSubmit = async formState => {\n try {\n await store.dispatch('agentCapacityPolicies/update', {\n id: selectedPolicyId.value,\n ...formState,\n });\n\n useAlert(t(`${BASE_KEY}.EDIT.API.SUCCESS_MESSAGE`));\n } catch {\n useAlert(t(`${BASE_KEY}.EDIT.API.ERROR_MESSAGE`));\n }\n};\n\nconst fetchPolicyData = async () => {\n if (!routeId.value) return;\n\n // Fetch policy if not available\n if (!selectedPolicyId.value)\n await store.dispatch('agentCapacityPolicies/show', routeId.value);\n\n await store.dispatch('agentCapacityPolicies/getUsers', Number(routeId.value));\n};\n\nwatch(routeId, fetchPolicyData, { immediate: true });\nonMounted(() => store.dispatch('agents/get'));\n</script>\n\n<template>\n <SettingsLayout :is-loading=\"uiFlags.isFetchingItem\" class=\"xl:px-44\">\n <template #header>\n <div class=\"flex items-center gap-2 w-full justify-between\">\n <Breadcrumb :items=\"breadcrumbItems\" @click=\"handleBreadcrumbClick\" />\n </div>\n </template>\n\n <template #body>\n <AgentCapacityPolicyForm\n :key=\"routeId\"\n mode=\"EDIT\"\n :initial-data=\"formData\"\n :policy-users=\"policyUsers\"\n :agent-list=\"allAgents\"\n :label-list=\"allLabels\"\n :inbox-list=\"allInboxes\"\n show-user-section\n show-inbox-limit-section\n :is-loading=\"uiFlags.isUpdating\"\n :is-users-loading=\"usersUiFlags.isFetching\"\n :is-inboxes-loading=\"inboxesUiFlags.isFetching\"\n @submit=\"handleSubmit\"\n @add-user=\"handleAddUser\"\n @delete-user=\"handleDeleteUser\"\n @add-inbox-limit=\"handleAddInboxLimit\"\n @update-inbox-limit=\"handleLimitChange\"\n @delete-inbox-limit=\"handleDeleteInboxLimit\"\n />\n </template>\n </SettingsLayout>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/AgentCapacityIndexPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/AgentAssignmentPolicyForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.${type}.${key.toUpperCase()}.LABEL`' dynamic key is used'","line":88,"column":10,"nodeType":"CallExpression","endLine":88,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.${type}.${key.toUpperCase()}.DESCRIPTION`' dynamic key is used'","line":89,"column":16,"nodeType":"CallExpression","endLine":89,"endColumn":78},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.ASSIGNMENT_ORDER.LABEL`' dynamic key is used'","line":111,"column":12,"nodeType":"CallExpression","endLine":111,"endColumn":56},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.ASSIGNMENT_PRIORITY.LABEL`' dynamic key is used'","line":116,"column":12,"nodeType":"CallExpression","endLine":116,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.${props.mode.toUpperCase()}.${props.mode}_BUTTON`' dynamic key is used'","line":122,"column":3,"nodeType":"CallExpression","endLine":122,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.NAME.LABEL`' dynamic key is used'","line":166,"column":22,"nodeType":"CallExpression","endLine":166,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.NAME.PLACEHOLDER`' dynamic key is used'","line":167,"column":28,"nodeType":"CallExpression","endLine":167,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.DESCRIPTION.LABEL`' dynamic key is used'","line":168,"column":29,"nodeType":"CallExpression","endLine":168,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.DESCRIPTION.PLACEHOLDER`' dynamic key is used'","line":169,"column":35,"nodeType":"CallExpression","endLine":169,"endColumn":80},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.STATUS.LABEL`' dynamic key is used'","line":170,"column":24,"nodeType":"CallExpression","endLine":170,"endColumn":58},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.STATUS.${state.enabled?'ACTIVE':'INACTIVE'}`' dynamic key is used'","line":172,"column":11,"nodeType":"CallExpression","endLine":172,"endColumn":80},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.FAIR_DISTRIBUTION.LABEL`' dynamic key is used'","line":206,"column":16,"nodeType":"CallExpression","endLine":206,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.FAIR_DISTRIBUTION.DESCRIPTION`' dynamic key is used'","line":209,"column":16,"nodeType":"CallExpression","endLine":209,"endColumn":67},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.LABEL`' dynamic key is used'","line":234,"column":16,"nodeType":"CallExpression","endLine":234,"endColumn":51},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.DESCRIPTION`' dynamic key is used'","line":237,"column":16,"nodeType":"CallExpression","endLine":237,"endColumn":57},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.ADD_BUTTON`' dynamic key is used'","line":241,"column":19,"nodeType":"CallExpression","endLine":241,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.DROPDOWN.SEARCH_PLACEHOLDER`' dynamic key is used'","line":243,"column":13,"nodeType":"CallExpression","endLine":243,"endColumn":70},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.INBOXES.EMPTY_STATE`' dynamic key is used'","line":252,"column":31,"nodeType":"CallExpression","endLine":252,"endColumn":72}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":18,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, reactive, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useConfig } from 'dashboard/composables/useConfig';\nimport BaseInfo from 'dashboard/components-next/AssignmentPolicy/components/BaseInfo.vue';\nimport RadioCard from 'dashboard/components-next/AssignmentPolicy/components/RadioCard.vue';\nimport FairDistribution from 'dashboard/components-next/AssignmentPolicy/components/FairDistribution.vue';\nimport DataTable from 'dashboard/components-next/AssignmentPolicy/components/DataTable.vue';\nimport AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';\nimport WithLabel from 'v3/components/Form/WithLabel.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport {\n OPTIONS,\n ROUND_ROBIN,\n EARLIEST_CREATED,\n DEFAULT_FAIR_DISTRIBUTION_LIMIT,\n DEFAULT_FAIR_DISTRIBUTION_WINDOW,\n} from 'dashboard/routes/dashboard/settings/assignmentPolicy/constants';\n\nconst props = defineProps({\n initialData: {\n type: Object,\n default: () => ({\n name: '',\n description: '',\n enabled: false,\n assignmentOrder: ROUND_ROBIN,\n conversationPriority: EARLIEST_CREATED,\n fairDistributionLimit: DEFAULT_FAIR_DISTRIBUTION_LIMIT,\n fairDistributionWindow: DEFAULT_FAIR_DISTRIBUTION_WINDOW,\n }),\n },\n mode: {\n type: String,\n required: true,\n validator: value => ['CREATE', 'EDIT'].includes(value),\n },\n policyInboxes: {\n type: Array,\n default: () => [],\n },\n inboxList: {\n type: Array,\n default: () => [],\n },\n showInboxSection: {\n type: Boolean,\n default: false,\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n isInboxLoading: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits([\n 'submit',\n 'addInbox',\n 'deleteInbox',\n 'validationChange',\n]);\n\nconst { t } = useI18n();\nconst { isEnterprise } = useConfig();\n\nconst BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY';\n\nconst state = reactive({\n name: '',\n description: '',\n enabled: false,\n assignmentOrder: ROUND_ROBIN,\n conversationPriority: EARLIEST_CREATED,\n fairDistributionLimit: DEFAULT_FAIR_DISTRIBUTION_LIMIT,\n fairDistributionWindow: DEFAULT_FAIR_DISTRIBUTION_WINDOW,\n});\n\nconst validationState = ref({\n isValid: false,\n});\n\nconst createOption = (type, key, stateKey) => ({\n key,\n label: t(`${BASE_KEY}.FORM.${type}.${key.toUpperCase()}.LABEL`),\n description: t(`${BASE_KEY}.FORM.${type}.${key.toUpperCase()}.DESCRIPTION`),\n isActive: state[stateKey] === key,\n});\n\nconst assignmentOrderOptions = computed(() => {\n const options = OPTIONS.ORDER.filter(\n key => isEnterprise || key !== 'balanced'\n );\n return options.map(key =>\n createOption('ASSIGNMENT_ORDER', key, 'assignmentOrder')\n );\n});\n\nconst assignmentPriorityOptions = computed(() =>\n OPTIONS.PRIORITY.map(key =>\n createOption('ASSIGNMENT_PRIORITY', key, 'conversationPriority')\n )\n);\n\nconst radioSections = computed(() => [\n {\n key: 'assignmentOrder',\n label: t(`${BASE_KEY}.FORM.ASSIGNMENT_ORDER.LABEL`),\n options: assignmentOrderOptions.value,\n },\n {\n key: 'conversationPriority',\n label: t(`${BASE_KEY}.FORM.ASSIGNMENT_PRIORITY.LABEL`),\n options: assignmentPriorityOptions.value,\n },\n]);\n\nconst buttonLabel = computed(() =>\n t(`${BASE_KEY}.${props.mode.toUpperCase()}.${props.mode}_BUTTON`)\n);\n\nconst handleValidationChange = validation => {\n validationState.value = validation;\n emit('validationChange', validation);\n};\n\nconst resetForm = () => {\n Object.assign(state, {\n name: '',\n description: '',\n enabled: false,\n assignmentOrder: ROUND_ROBIN,\n conversationPriority: EARLIEST_CREATED,\n fairDistributionLimit: DEFAULT_FAIR_DISTRIBUTION_LIMIT,\n fairDistributionWindow: DEFAULT_FAIR_DISTRIBUTION_WINDOW,\n });\n};\n\nconst handleSubmit = () => {\n emit('submit', { ...state });\n};\n\nwatch(\n () => props.initialData,\n newData => {\n Object.assign(state, newData);\n },\n { immediate: true, deep: true }\n);\n\ndefineExpose({\n resetForm,\n});\n</script>\n\n<template>\n <form @submit.prevent=\"handleSubmit\">\n <div class=\"flex flex-col gap-4 divide-y divide-n-weak mb-4\">\n <BaseInfo\n v-model:policy-name=\"state.name\"\n v-model:description=\"state.description\"\n v-model:enabled=\"state.enabled\"\n :name-label=\"t(`${BASE_KEY}.FORM.NAME.LABEL`)\"\n :name-placeholder=\"t(`${BASE_KEY}.FORM.NAME.PLACEHOLDER`)\"\n :description-label=\"t(`${BASE_KEY}.FORM.DESCRIPTION.LABEL`)\"\n :description-placeholder=\"t(`${BASE_KEY}.FORM.DESCRIPTION.PLACEHOLDER`)\"\n :status-label=\"t(`${BASE_KEY}.FORM.STATUS.LABEL`)\"\n :status-placeholder=\"\n t(`${BASE_KEY}.FORM.STATUS.${state.enabled ? 'ACTIVE' : 'INACTIVE'}`)\n \"\n @validation-change=\"handleValidationChange\"\n />\n\n <div class=\"flex flex-col items-center\">\n <div\n v-for=\"section in radioSections\"\n :key=\"section.key\"\n class=\"py-4 flex flex-col items-start gap-3 w-full\"\n >\n <WithLabel\n :label=\"section.label\"\n name=\"assignmentPolicy\"\n class=\"w-full flex items-start flex-col gap-3\"\n >\n <div class=\"grid grid-cols-1 xs:grid-cols-2 gap-4 w-full\">\n <RadioCard\n v-for=\"option in section.options\"\n :id=\"option.key\"\n :key=\"option.key\"\n :label=\"option.label\"\n :description=\"option.description\"\n :is-active=\"option.isActive\"\n @select=\"state[section.key] = $event\"\n />\n </div>\n </WithLabel>\n </div>\n </div>\n\n <div class=\"pt-4 pb-2 flex-col flex gap-4\">\n <div class=\"flex flex-col items-start gap-1 py-1\">\n <label class=\"text-sm font-medium text-n-slate-12 py-1\">\n {{ t(`${BASE_KEY}.FORM.FAIR_DISTRIBUTION.LABEL`) }}\n </label>\n <p class=\"mb-0 text-n-slate-11 text-sm\">\n {{ t(`${BASE_KEY}.FORM.FAIR_DISTRIBUTION.DESCRIPTION`) }}\n </p>\n </div>\n <FairDistribution\n v-model:fair-distribution-limit=\"state.fairDistributionLimit\"\n v-model:fair-distribution-window=\"state.fairDistributionWindow\"\n v-model:window-unit=\"state.windowUnit\"\n />\n </div>\n </div>\n\n <Button\n type=\"submit\"\n :label=\"buttonLabel\"\n :disabled=\"!validationState.isValid || isLoading\"\n :is-loading=\"isLoading\"\n />\n\n <div\n v-if=\"showInboxSection\"\n class=\"py-4 flex-col flex gap-4 border-t border-n-weak mt-6\"\n >\n <div class=\"flex items-end gap-4 w-full justify-between\">\n <div class=\"flex flex-col items-start gap-1 py-1\">\n <label class=\"text-sm font-medium text-n-slate-12 py-1\">\n {{ t(`${BASE_KEY}.FORM.INBOXES.LABEL`) }}\n </label>\n <p class=\"mb-0 text-n-slate-11 text-sm\">\n {{ t(`${BASE_KEY}.FORM.INBOXES.DESCRIPTION`) }}\n </p>\n </div>\n <AddDataDropdown\n :label=\"t(`${BASE_KEY}.FORM.INBOXES.ADD_BUTTON`)\"\n :search-placeholder=\"\n t(`${BASE_KEY}.FORM.INBOXES.DROPDOWN.SEARCH_PLACEHOLDER`)\n \"\n :items=\"inboxList\"\n @add=\"$emit('addInbox', $event)\"\n />\n </div>\n <DataTable\n :items=\"policyInboxes\"\n :is-fetching=\"isInboxLoading\"\n :empty-state-message=\"t(`${BASE_KEY}.FORM.INBOXES.EMPTY_STATE`)\"\n @delete=\"$emit('deleteInbox', $event)\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/AgentCapacityPolicyForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.${props.mode.toUpperCase()}.${props.mode}_BUTTON`' dynamic key is used'","line":97,"column":3,"nodeType":"CallExpression","endLine":97,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.NAME.LABEL`' dynamic key is used'","line":152,"column":22,"nodeType":"CallExpression","endLine":152,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.NAME.PLACEHOLDER`' dynamic key is used'","line":153,"column":28,"nodeType":"CallExpression","endLine":153,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.DESCRIPTION.LABEL`' dynamic key is used'","line":154,"column":29,"nodeType":"CallExpression","endLine":154,"endColumn":68},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.DESCRIPTION.PLACEHOLDER`' dynamic key is used'","line":155,"column":35,"nodeType":"CallExpression","endLine":155,"endColumn":80},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.USERS.LABEL`' dynamic key is used'","line":190,"column":18,"nodeType":"CallExpression","endLine":190,"endColumn":51},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.USERS.DESCRIPTION`' dynamic key is used'","line":193,"column":18,"nodeType":"CallExpression","endLine":193,"endColumn":57},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.USERS.ADD_BUTTON`' dynamic key is used'","line":197,"column":21,"nodeType":"CallExpression","endLine":197,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.USERS.DROPDOWN.SEARCH_PLACEHOLDER`' dynamic key is used'","line":199,"column":15,"nodeType":"CallExpression","endLine":199,"endColumn":70},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${BASE_KEY}.FORM.USERS.EMPTY_STATE`' dynamic key is used'","line":208,"column":33,"nodeType":"CallExpression","endLine":208,"endColumn":72}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, reactive, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport BaseInfo from 'dashboard/components-next/AssignmentPolicy/components/BaseInfo.vue';\nimport DataTable from 'dashboard/components-next/AssignmentPolicy/components/DataTable.vue';\nimport AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport ExclusionRules from 'dashboard/components-next/AssignmentPolicy/components/ExclusionRules.vue';\nimport InboxCapacityLimits from 'dashboard/components-next/AssignmentPolicy/components/InboxCapacityLimits.vue';\n\nconst props = defineProps({\n initialData: {\n type: Object,\n default: () => ({\n name: '',\n description: '',\n enabled: false,\n exclusionRules: {\n excludedLabels: [],\n excludeOlderThanHours: 10,\n },\n inboxCapacityLimits: [],\n }),\n },\n mode: {\n type: String,\n required: true,\n validator: value => ['CREATE', 'EDIT'].includes(value),\n },\n policyUsers: {\n type: Array,\n default: () => [],\n },\n agentList: {\n type: Array,\n default: () => [],\n },\n labelList: {\n type: Array,\n default: () => [],\n },\n inboxList: {\n type: Array,\n default: () => [],\n },\n showUserSection: {\n type: Boolean,\n default: false,\n },\n showInboxLimitSection: {\n type: Boolean,\n default: false,\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n isUsersLoading: {\n type: Boolean,\n default: false,\n },\n isInboxesLoading: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits([\n 'submit',\n 'addUser',\n 'deleteUser',\n 'validationChange',\n 'deleteInboxLimit',\n 'addInboxLimit',\n 'updateInboxLimit',\n]);\n\nconst { t } = useI18n();\n\nconst BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY';\n\nconst state = reactive({\n name: '',\n description: '',\n exclusionRules: {\n excludedLabels: [],\n excludeOlderThanHours: 10,\n },\n inboxCapacityLimits: [],\n});\n\nconst validationState = ref({\n isValid: false,\n});\n\nconst buttonLabel = computed(() =>\n t(`${BASE_KEY}.${props.mode.toUpperCase()}.${props.mode}_BUTTON`)\n);\n\nconst handleValidationChange = validation => {\n validationState.value = validation;\n emit('validationChange', validation);\n};\n\nconst handleDeleteInboxLimit = id => {\n emit('deleteInboxLimit', id);\n};\n\nconst handleAddInboxLimit = limit => {\n emit('addInboxLimit', limit);\n};\n\nconst handleLimitChange = limit => {\n emit('updateInboxLimit', limit);\n};\n\nconst resetForm = () => {\n Object.assign(state, {\n name: '',\n description: '',\n exclusionRules: {\n excludedLabels: [],\n excludeOlderThanHours: 10,\n },\n inboxCapacityLimits: [],\n });\n};\n\nconst handleSubmit = () => {\n emit('submit', { ...state });\n};\n\nwatch(\n () => props.initialData,\n newData => {\n Object.assign(state, newData);\n },\n { immediate: true, deep: true }\n);\n\ndefineExpose({\n resetForm,\n});\n</script>\n\n<template>\n <form @submit.prevent=\"handleSubmit\">\n <div class=\"flex flex-col gap-4 mb-2 divide-y divide-n-weak\">\n <BaseInfo\n v-model:policy-name=\"state.name\"\n v-model:description=\"state.description\"\n :name-label=\"t(`${BASE_KEY}.FORM.NAME.LABEL`)\"\n :name-placeholder=\"t(`${BASE_KEY}.FORM.NAME.PLACEHOLDER`)\"\n :description-label=\"t(`${BASE_KEY}.FORM.DESCRIPTION.LABEL`)\"\n :description-placeholder=\"t(`${BASE_KEY}.FORM.DESCRIPTION.PLACEHOLDER`)\"\n @validation-change=\"handleValidationChange\"\n />\n <ExclusionRules\n v-model:excluded-labels=\"state.exclusionRules.excludedLabels\"\n v-model:exclude-older-than-minutes=\"\n state.exclusionRules.excludeOlderThanHours\n \"\n :tags-list=\"labelList\"\n />\n </div>\n <Button\n type=\"submit\"\n :label=\"buttonLabel\"\n :disabled=\"!validationState.isValid || isLoading\"\n :is-loading=\"isLoading\"\n />\n\n <div\n v-if=\"showInboxLimitSection || showUserSection\"\n class=\"flex flex-col gap-4 divide-y divide-n-weak border-t border-n-weak mt-6\"\n >\n <InboxCapacityLimits\n v-if=\"showInboxLimitSection\"\n v-model:inbox-capacity-limits=\"state.inboxCapacityLimits\"\n :inbox-list=\"inboxList\"\n :is-fetching=\"isInboxesLoading\"\n @delete=\"handleDeleteInboxLimit\"\n @add=\"handleAddInboxLimit\"\n @update=\"handleLimitChange\"\n />\n <div v-if=\"showUserSection\" class=\"py-4 flex-col flex gap-4\">\n <div class=\"flex items-end gap-4 w-full justify-between\">\n <div class=\"flex flex-col items-start gap-1 py-1\">\n <label class=\"text-sm font-medium text-n-slate-12 py-1\">\n {{ t(`${BASE_KEY}.FORM.USERS.LABEL`) }}\n </label>\n <p class=\"mb-0 text-n-slate-11 text-sm\">\n {{ t(`${BASE_KEY}.FORM.USERS.DESCRIPTION`) }}\n </p>\n </div>\n <AddDataDropdown\n :label=\"t(`${BASE_KEY}.FORM.USERS.ADD_BUTTON`)\"\n :search-placeholder=\"\n t(`${BASE_KEY}.FORM.USERS.DROPDOWN.SEARCH_PLACEHOLDER`)\n \"\n :items=\"agentList\"\n @add=\"$emit('addUser', $event)\"\n />\n </div>\n <DataTable\n :items=\"policyUsers\"\n :is-fetching=\"isUsersLoading\"\n :empty-state-message=\"t(`${BASE_KEY}.FORM.USERS.EMPTY_STATE`)\"\n @delete=\"$emit('deleteUser', $event)\"\n />\n </div>\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/ConfirmDeletePolicyDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/assignmentPolicy/pages/components/ConfirmInboxDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/attributes/AddAttribute.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`ATTRIBUTES_MGMT.ATTRIBUTE_MODELS.${item.key}`' dynamic key is used'","line":57,"column":17,"nodeType":"CallExpression","endLine":57,"endColumn":72},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`ATTRIBUTES_MGMT.ATTRIBUTE_TYPES.${item.key}`' dynamic key is used'","line":63,"column":17,"nodeType":"CallExpression","endLine":63,"endColumn":71}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { mapGetters } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport { convertToAttributeSlug } from 'dashboard/helper/commons.js';\nimport { ATTRIBUTE_MODELS, ATTRIBUTE_TYPES } from './constants';\n\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n onClose: {\n type: Function,\n default: () => {},\n },\n // Passes 0 or 1 based on the selected AttributeModel tab selected in the UI\n // Needs a better data type, todo: refactor this component later\n selectedAttributeModelTab: {\n type: Number,\n default: 0,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n displayName: '',\n description: '',\n // Using the prop as default. There is no side effect here as the component\n // is destroyed completely when the modal is closed. The prop doesn't change\n // dynamically when the modal is active.\n attributeModel: this.selectedAttributeModelTab || 0,\n attributeType: 0,\n attributeKey: '',\n regexPattern: null,\n regexCue: null,\n regexEnabled: false,\n values: [],\n options: [],\n show: true,\n isTouched: false,\n };\n },\n\n computed: {\n ...mapGetters({\n uiFlags: 'getUIFlags',\n }),\n models() {\n return ATTRIBUTE_MODELS.map(item => ({\n ...item,\n option: this.$t(`ATTRIBUTES_MGMT.ATTRIBUTE_MODELS.${item.key}`),\n }));\n },\n types() {\n return ATTRIBUTE_TYPES.map(item => ({\n ...item,\n option: this.$t(`ATTRIBUTES_MGMT.ATTRIBUTE_TYPES.${item.key}`),\n }));\n },\n isMultiselectInvalid() {\n return this.isTouched && this.values.length === 0;\n },\n isTagInputInvalid() {\n return this.isAttributeTypeList && this.values.length === 0;\n },\n attributeListValues() {\n return this.values.map(item => item.name);\n },\n isButtonDisabled() {\n return (\n this.v$.displayName.$invalid ||\n this.v$.description.$invalid ||\n this.uiFlags.isCreating ||\n this.isTagInputInvalid\n );\n },\n keyErrorMessage() {\n if (!this.v$.attributeKey.isKey) {\n return this.$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.IN_VALID');\n }\n return this.$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.ERROR');\n },\n isAttributeTypeList() {\n return this.attributeType === 6;\n },\n isAttributeTypeText() {\n return this.attributeType === 0;\n },\n isRegexEnabled() {\n return this.regexEnabled;\n },\n },\n\n validations: {\n displayName: {\n required,\n minLength: minLength(1),\n },\n description: {\n required,\n },\n attributeModel: {\n required,\n },\n attributeType: {\n required,\n },\n attributeKey: {\n required,\n isKey(value) {\n return !(value.indexOf(' ') >= 0);\n },\n },\n },\n\n methods: {\n addTagValue(tagValue) {\n const tag = {\n name: tagValue,\n };\n this.values.push(tag);\n this.$refs.tagInput.$el.focus();\n },\n onTouch() {\n this.isTouched = true;\n },\n onDisplayNameChange() {\n this.attributeKey = convertToAttributeSlug(this.displayName);\n },\n toggleRegexEnabled() {\n this.regexEnabled = !this.regexEnabled;\n },\n async addAttributes() {\n this.v$.$touch();\n if (this.v$.$invalid) {\n return;\n }\n if (!this.regexEnabled) {\n this.regexPattern = null;\n this.regexCue = null;\n }\n try {\n await this.$store.dispatch('attributes/create', {\n attribute_display_name: this.displayName,\n attribute_description: this.description,\n attribute_model: this.attributeModel,\n attribute_display_type: this.attributeType,\n attribute_key: this.attributeKey,\n attribute_values: this.attributeListValues,\n regex_pattern: this.regexPattern\n ? new RegExp(this.regexPattern).toString()\n : null,\n regex_cue: this.regexCue,\n });\n this.alertMessage = this.$t('ATTRIBUTES_MGMT.ADD.API.SUCCESS_MESSAGE');\n this.onClose();\n } catch (error) {\n const errorMessage = error?.message;\n this.alertMessage =\n errorMessage || this.$t('ATTRIBUTES_MGMT.ADD.API.ERROR_MESSAGE');\n } finally {\n useAlert(this.alertMessage);\n }\n },\n },\n};\n</script>\n\n<template>\n <woot-modal v-model:show=\"show\" :on-close=\"onClose\">\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header :header-title=\"$t('ATTRIBUTES_MGMT.ADD.TITLE')\" />\n\n <form class=\"flex w-full\" @submit.prevent=\"addAttributes\">\n <div class=\"w-full\">\n <label :class=\"{ error: v$.attributeModel.$error }\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.MODEL.LABEL') }}\n <select v-model=\"attributeModel\">\n <option v-for=\"model in models\" :key=\"model.id\" :value=\"model.id\">\n {{ model.option }}\n </option>\n </select>\n <span v-if=\"v$.attributeModel.$error\" class=\"message\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.MODEL.ERROR') }}\n </span>\n </label>\n <woot-input\n v-model=\"displayName\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.NAME.LABEL')\"\n type=\"text\"\n :class=\"{ error: v$.displayName.$error }\"\n :error=\"\n v$.displayName.$error\n ? $t('ATTRIBUTES_MGMT.ADD.FORM.NAME.ERROR')\n : ''\n \"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.NAME.PLACEHOLDER')\"\n @update:model-value=\"onDisplayNameChange\"\n @blur=\"v$.displayName.$touch\"\n />\n <woot-input\n v-model=\"attributeKey\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.LABEL')\"\n type=\"text\"\n :class=\"{ error: v$.attributeKey.$error }\"\n :error=\"v$.attributeKey.$error ? keyErrorMessage : ''\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.PLACEHOLDER')\"\n @blur=\"v$.attributeKey.$touch\"\n />\n <label :class=\"{ error: v$.description.$error }\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.DESC.LABEL') }}\n <textarea\n v-model=\"description\"\n rows=\"3\"\n type=\"text\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.DESC.PLACEHOLDER')\"\n @blur=\"v$.description.$touch\"\n />\n <span v-if=\"v$.description.$error\" class=\"message\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.DESC.ERROR') }}\n </span>\n </label>\n <label :class=\"{ error: v$.attributeType.$error }\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LABEL') }}\n <select v-model=\"attributeType\">\n <option v-for=\"type in types\" :key=\"type.id\" :value=\"type.id\">\n {{ type.option }}\n </option>\n </select>\n <span v-if=\"v$.attributeType.$error\" class=\"message\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.ERROR') }}\n </span>\n </label>\n <div v-if=\"isAttributeTypeList\" class=\"multiselect--wrap\">\n <label>\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LIST.LABEL') }}\n </label>\n <multiselect\n ref=\"tagInput\"\n v-model=\"values\"\n :placeholder=\"\n $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LIST.PLACEHOLDER')\n \"\n label=\"name\"\n track-by=\"name\"\n :class=\"{ invalid: isMultiselectInvalid }\"\n :options=\"options\"\n multiple\n taggable\n @close=\"onTouch\"\n @tag=\"addTagValue\"\n />\n <label\n v-show=\"isMultiselectInvalid\"\n class=\"text-n-ruby-9 dark:text-n-ruby-9 text-sm font-normal mt-1\"\n >\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LIST.ERROR') }}\n </label>\n </div>\n <div v-if=\"isAttributeTypeText\">\n <input\n v-model=\"regexEnabled\"\n type=\"checkbox\"\n @input=\"toggleRegexEnabled\"\n />\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.ENABLE_REGEX.LABEL') }}\n </div>\n <woot-input\n v-if=\"isAttributeTypeText && isRegexEnabled\"\n v-model=\"regexPattern\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_PATTERN.LABEL')\"\n type=\"text\"\n :placeholder=\"\n $t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_PATTERN.PLACEHOLDER')\n \"\n />\n <woot-input\n v-if=\"isAttributeTypeText && isRegexEnabled\"\n v-model=\"regexCue\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_CUE.LABEL')\"\n type=\"text\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_CUE.PLACEHOLDER')\"\n />\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.CANCEL_BUTTON_TEXT')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n type=\"submit\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.SUBMIT')\"\n :disabled=\"isButtonDisabled\"\n />\n </div>\n </div>\n </form>\n </div>\n </woot-modal>\n</template>\n\n<style lang=\"scss\" scoped>\n.key-value {\n padding: 0 0.5rem 0.5rem 0;\n font-family: monospace;\n}\n\n.multiselect--wrap {\n margin-bottom: 1rem;\n}\n\n::v-deep {\n .multiselect {\n margin-bottom: 0;\n }\n\n .multiselect__content-wrapper {\n display: none;\n }\n\n .multiselect--active .multiselect__tags {\n border-radius: 0.3125rem;\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/attributes/CustomAttribute.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`ATTRIBUTES_MGMT.ATTRIBUTE_TYPES.${attribute.attribute_display_type?.toUpperCase()}`' dynamic key is used'","line":117,"column":15,"nodeType":"CallExpression","endLine":119,"endColumn":16}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useAlert } from 'dashboard/composables';\nimport EditAttribute from './EditAttribute.vue';\nimport { useStoreGetters, useStore } from 'dashboard/composables/store';\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n attributeModel: {\n type: String,\n default: 'conversation_attribute',\n },\n});\n\nconst { t } = useI18n();\n\nconst showEditPopup = ref(false);\nconst showDeletePopup = ref(false);\nconst selectedAttribute = ref({});\n\nconst getters = useStoreGetters();\nconst store = useStore();\n\nconst attributes = computed(() =>\n getters['attributes/getAttributesByModel'].value(props.attributeModel)\n);\nconst uiFlags = computed(() => getters['attributes/getUIFlags'].value);\n\nconst attributeDisplayName = computed(\n () => selectedAttribute.value.attribute_display_name\n);\nconst deleteConfirmText = computed(\n () =>\n `${t('ATTRIBUTES_MGMT.DELETE.CONFIRM.YES')} ${attributeDisplayName.value}`\n);\nconst deleteRejectText = computed(() => t('ATTRIBUTES_MGMT.DELETE.CONFIRM.NO'));\nconst confirmDeleteTitle = computed(() =>\n t('ATTRIBUTES_MGMT.DELETE.CONFIRM.TITLE', {\n attributeName: attributeDisplayName.value,\n })\n);\nconst confirmPlaceHolderText = computed(\n () =>\n `${t('ATTRIBUTES_MGMT.DELETE.CONFIRM.PLACE_HOLDER', {\n attributeName: attributeDisplayName.value,\n })}`\n);\n\nconst deleteAttributes = async ({ id }) => {\n try {\n await store.dispatch('attributes/delete', id);\n useAlert(t('ATTRIBUTES_MGMT.DELETE.API.SUCCESS_MESSAGE'));\n } catch (error) {\n const errorMessage =\n error?.response?.message || t('ATTRIBUTES_MGMT.DELETE.API.ERROR_MESSAGE');\n useAlert(errorMessage);\n }\n};\nconst openEditPopup = response => {\n showEditPopup.value = true;\n selectedAttribute.value = response;\n};\nconst hideEditPopup = () => {\n showEditPopup.value = false;\n};\n\nconst closeDelete = () => {\n showDeletePopup.value = false;\n selectedAttribute.value = {};\n};\nconst confirmDeletion = () => {\n deleteAttributes(selectedAttribute.value);\n closeDelete();\n};\nconst openDelete = value => {\n showDeletePopup.value = true;\n selectedAttribute.value = value;\n};\n\nconst tableHeaders = computed(() => {\n return [\n t('ATTRIBUTES_MGMT.LIST.TABLE_HEADER.NAME'),\n t('ATTRIBUTES_MGMT.LIST.TABLE_HEADER.DESCRIPTION'),\n t('ATTRIBUTES_MGMT.LIST.TABLE_HEADER.TYPE'),\n t('ATTRIBUTES_MGMT.LIST.TABLE_HEADER.KEY'),\n ];\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <table class=\"min-w-full overflow-x-auto\">\n <thead>\n <th\n v-for=\"tableHeader in tableHeaders\"\n :key=\"tableHeader\"\n class=\"py-4 ltr:pr-4 rtl:pl-4 text-left font-semibold text-n-slate-11\"\n >\n {{ tableHeader }}\n </th>\n </thead>\n <tbody class=\"divide-y divide-n-weak flex-1 text-n-slate-12\">\n <tr v-for=\"attribute in attributes\" :key=\"attribute.attribute_key\">\n <td\n class=\"py-4 ltr:pr-4 rtl:pl-4 overflow-hidden whitespace-nowrap text-ellipsis\"\n >\n {{ attribute.attribute_display_name }}\n </td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n {{ attribute.attribute_description }}\n </td>\n <td\n class=\"py-4 ltr:pr-4 rtl:pl-4 overflow-hidden whitespace-nowrap text-ellipsis\"\n >\n {{\n $t(\n `ATTRIBUTES_MGMT.ATTRIBUTE_TYPES.${attribute.attribute_display_type?.toUpperCase()}`\n )\n }}\n </td>\n <td\n class=\"py-4 ltr:pr-4 rtl:pl-4 attribute-key overflow-hidden whitespace-nowrap text-ellipsis\"\n >\n {{ attribute.attribute_key }}\n </td>\n <td class=\"py-4 min-w-xs\">\n <div class=\"flex gap-1 justify-end\">\n <Button\n v-tooltip.top=\"$t('ATTRIBUTES_MGMT.LIST.BUTTONS.EDIT')\"\n icon=\"i-lucide-pen\"\n slate\n xs\n faded\n @click=\"openEditPopup(attribute)\"\n />\n <Button\n v-tooltip.top=\"$t('ATTRIBUTES_MGMT.LIST.BUTTONS.DELETE')\"\n icon=\"i-lucide-trash-2\"\n xs\n ruby\n faded\n @click=\"openDelete(attribute)\"\n />\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n <woot-modal v-model:show=\"showEditPopup\" :on-close=\"hideEditPopup\">\n <EditAttribute\n :selected-attribute=\"selectedAttribute\"\n :is-updating=\"uiFlags.isUpdating\"\n @on-close=\"hideEditPopup\"\n />\n </woot-modal>\n <woot-confirm-delete-modal\n v-if=\"showDeletePopup\"\n v-model:show=\"showDeletePopup\"\n :title=\"confirmDeleteTitle\"\n :message=\"$t('ATTRIBUTES_MGMT.DELETE.CONFIRM.MESSAGE')\"\n :confirm-text=\"deleteConfirmText\"\n :reject-text=\"deleteRejectText\"\n :confirm-value=\"selectedAttribute.attribute_display_name\"\n :confirm-place-holder-text=\"confirmPlaceHolderText\"\n @on-confirm=\"confirmDeletion\"\n @on-close=\"closeDelete\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.attribute-key {\n font-family: monospace;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/attributes/EditAttribute.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`ATTRIBUTES_MGMT.ATTRIBUTE_TYPES.${item.key}`' dynamic key is used'","line":64,"column":17,"nodeType":"CallExpression","endLine":64,"endColumn":71}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport { useAlert } from 'dashboard/composables';\nimport { required, minLength } from '@vuelidate/validators';\nimport { getRegexp } from 'shared/helpers/Validators';\nimport { ATTRIBUTE_TYPES } from './constants';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n selectedAttribute: {\n type: Object,\n default: () => {},\n },\n isUpdating: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['onClose'],\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n displayName: '',\n description: '',\n attributeType: 0,\n regexPattern: null,\n regexCue: null,\n regexEnabled: false,\n show: true,\n attributeKey: '',\n values: [],\n options: [],\n isTouched: true,\n };\n },\n validations: {\n displayName: {\n required,\n },\n attributeType: {\n required,\n },\n description: {\n required,\n minLength: minLength(1),\n },\n attributeKey: {\n required,\n isKey(value) {\n return !(value.indexOf(' ') >= 0);\n },\n },\n },\n computed: {\n types() {\n return ATTRIBUTE_TYPES.map(item => ({\n ...item,\n option: this.$t(`ATTRIBUTES_MGMT.ATTRIBUTE_TYPES.${item.key}`),\n }));\n },\n setAttributeListValue() {\n return this.selectedAttribute.attribute_values.map(values => ({\n name: values,\n }));\n },\n updatedAttributeListValues() {\n return this.values.map(item => item.name);\n },\n isButtonDisabled() {\n return this.v$.description.$invalid || this.isMultiselectInvalid;\n },\n isMultiselectInvalid() {\n return (\n this.isAttributeTypeList && this.isTouched && this.values.length === 0\n );\n },\n\n pageTitle() {\n return `${this.$t('ATTRIBUTES_MGMT.EDIT.TITLE')} - ${\n this.selectedAttribute.attribute_display_name\n }`;\n },\n selectedAttributeType() {\n return this.types.find(\n item =>\n item.key.toLowerCase() ===\n this.selectedAttribute.attribute_display_type\n )?.id;\n },\n keyErrorMessage() {\n if (!this.v$.attributeKey.isKey) {\n return this.$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.IN_VALID');\n }\n return this.$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.ERROR');\n },\n isAttributeTypeList() {\n return this.attributeType === 6;\n },\n isAttributeTypeText() {\n return this.attributeType === 0;\n },\n isRegexEnabled() {\n return this.regexEnabled;\n },\n },\n mounted() {\n this.setFormValues();\n },\n methods: {\n onClose() {\n this.$emit('onClose');\n },\n addTagValue(tagValue) {\n const tag = {\n name: tagValue,\n };\n this.values.push(tag);\n this.$refs.tagInput.$el.focus();\n },\n setFormValues() {\n const regexPattern = this.selectedAttribute.regex_pattern\n ? getRegexp(this.selectedAttribute.regex_pattern).source\n : null;\n this.displayName = this.selectedAttribute.attribute_display_name;\n this.description = this.selectedAttribute.attribute_description;\n this.attributeType = this.selectedAttributeType;\n this.attributeKey = this.selectedAttribute.attribute_key;\n this.regexPattern = regexPattern;\n this.regexCue = this.selectedAttribute.regex_cue;\n this.regexEnabled = regexPattern != null;\n this.values = this.setAttributeListValue;\n },\n async editAttributes() {\n this.v$.$touch();\n if (this.v$.$invalid) {\n return;\n }\n if (!this.regexEnabled) {\n this.regexPattern = null;\n this.regexCue = null;\n }\n try {\n await this.$store.dispatch('attributes/update', {\n id: this.selectedAttribute.id,\n attribute_description: this.description,\n attribute_display_name: this.displayName,\n attribute_values: this.updatedAttributeListValues,\n regex_pattern: this.regexPattern\n ? new RegExp(this.regexPattern).toString()\n : null,\n regex_cue: this.regexCue,\n });\n this.alertMessage = this.$t('ATTRIBUTES_MGMT.EDIT.API.SUCCESS_MESSAGE');\n this.onClose();\n } catch (error) {\n const errorMessage = error?.message;\n this.alertMessage =\n errorMessage || this.$t('ATTRIBUTES_MGMT.EDIT.API.ERROR_MESSAGE');\n } finally {\n useAlert(this.alertMessage);\n }\n },\n toggleRegexEnabled() {\n this.regexEnabled = !this.regexEnabled;\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header :header-title=\"pageTitle\" />\n <form class=\"flex flex-col w-full\" @submit.prevent=\"editAttributes\">\n <div class=\"w-full\">\n <woot-input\n v-model=\"displayName\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.NAME.LABEL')\"\n type=\"text\"\n :class=\"{ error: v$.displayName.$error }\"\n :error=\"\n v$.displayName.$error\n ? $t('ATTRIBUTES_MGMT.ADD.FORM.NAME.ERROR')\n : ''\n \"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.NAME.PLACEHOLDER')\"\n @blur=\"v$.displayName.$touch\"\n />\n <woot-input\n v-model=\"attributeKey\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.LABEL')\"\n type=\"text\"\n :class=\"{ error: v$.attributeKey.$error }\"\n :error=\"v$.attributeKey.$error ? keyErrorMessage : ''\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.KEY.PLACEHOLDER')\"\n readonly\n @blur=\"v$.attributeKey.$touch\"\n />\n <label :class=\"{ error: v$.description.$error }\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.DESC.LABEL') }}\n <textarea\n v-model=\"description\"\n rows=\"5\"\n type=\"text\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.DESC.PLACEHOLDER')\"\n @blur=\"v$.description.$touch\"\n />\n <span v-if=\"v$.description.$error\" class=\"message\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.DESC.ERROR') }}\n </span>\n </label>\n <label :class=\"{ error: v$.attributeType.$error }\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LABEL') }}\n <select v-model=\"attributeType\" disabled>\n <option v-for=\"type in types\" :key=\"type.id\" :value=\"type.id\">\n {{ type.option }}\n </option>\n </select>\n <span v-if=\"v$.attributeType.$error\" class=\"message\">\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.ERROR') }}\n </span>\n </label>\n <div v-if=\"isAttributeTypeList\" class=\"multiselect--wrap\">\n <label>\n {{ $t('ATTRIBUTES_MGMT.EDIT.TYPE.LIST.LABEL') }}\n </label>\n <multiselect\n ref=\"tagInput\"\n v-model=\"values\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LIST.PLACEHOLDER')\"\n label=\"name\"\n track-by=\"name\"\n :class=\"{ invalid: isMultiselectInvalid }\"\n :options=\"options\"\n multiple\n taggable\n @tag=\"addTagValue\"\n />\n <label\n v-show=\"isMultiselectInvalid\"\n class=\"text-n-ruby-9 dark:text-n-ruby-9 text-sm font-normal mt-1\"\n >\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.TYPE.LIST.ERROR') }}\n </label>\n </div>\n <div v-if=\"isAttributeTypeText\">\n <input\n v-model=\"regexEnabled\"\n type=\"checkbox\"\n @input=\"toggleRegexEnabled\"\n />\n {{ $t('ATTRIBUTES_MGMT.ADD.FORM.ENABLE_REGEX.LABEL') }}\n </div>\n <woot-input\n v-if=\"isAttributeTypeText && isRegexEnabled\"\n v-model=\"regexPattern\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_PATTERN.LABEL')\"\n type=\"text\"\n :placeholder=\"\n $t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_PATTERN.PLACEHOLDER')\n \"\n />\n <woot-input\n v-if=\"isAttributeTypeText && isRegexEnabled\"\n v-model=\"regexCue\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_CUE.LABEL')\"\n type=\"text\"\n :placeholder=\"$t('ATTRIBUTES_MGMT.ADD.FORM.REGEX_CUE.PLACEHOLDER')\"\n />\n </div>\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('ATTRIBUTES_MGMT.ADD.CANCEL_BUTTON_TEXT')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n type=\"submit\"\n :label=\"$t('ATTRIBUTES_MGMT.EDIT.UPDATE_BUTTON_TEXT')\"\n :is-loading=\"isUpdating\"\n :disabled=\"isButtonDisabled\"\n />\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.key-value {\n padding: 0 0.5rem 0.5rem 0;\n font-family: monospace;\n}\n\n.multiselect--wrap {\n margin-bottom: 1rem;\n}\n\n::v-deep {\n .multiselect {\n margin-bottom: 0;\n }\n\n .multiselect__content-wrapper {\n display: none;\n }\n\n .multiselect--active .multiselect__tags {\n border-radius: 0.3125rem;\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/attributes/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/attributes/attributes.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/attributes/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/auditlogs/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'translationKey' dynamic key is used'","line":50,"column":10,"nodeType":"CallExpression","endLine":50,"endColumn":42}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useAlert } from 'dashboard/composables';\nimport { messageTimestamp } from 'shared/helpers/timeHelper';\nimport { useStoreGetters, useStore } from 'dashboard/composables/store';\nimport TableFooter from 'dashboard/components/widgets/TableFooter.vue';\nimport BaseSettingsHeader from '../components/BaseSettingsHeader.vue';\nimport {\n generateTranslationPayload,\n generateLogActionKey,\n} from 'dashboard/helper/auditlogHelper';\nimport { computed, onMounted, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute, useRouter } from 'vue-router';\n\nconst getters = useStoreGetters();\nconst store = useStore();\nconst router = useRouter();\nconst records = computed(() => getters['auditlogs/getAuditLogs'].value);\nconst uiFlags = computed(() => getters['auditlogs/getUIFlags'].value);\nconst meta = computed(() => getters['auditlogs/getMeta'].value);\nconst agentList = computed(() => getters['agents/getAgents'].value);\n\nconst { t } = useI18n();\nconst route = useRoute();\n\nconst routerPage = computed(() => Number(route.query.page ?? 1));\n\nconst fetchAuditLogs = page => {\n try {\n store.dispatch('auditlogs/fetch', { page });\n } catch (error) {\n const errorMessage = error?.message || t('AUDIT_LOGS.API.ERROR_MESSAGE');\n useAlert(errorMessage);\n }\n};\n\nconst generateLogText = auditLogItem => {\n const payload = generateTranslationPayload(auditLogItem, agentList.value);\n const translationKey = generateLogActionKey(auditLogItem);\n\n const joinIfArray = value => {\n return Array.isArray(value) ? value.join(', ') : value;\n };\n\n const mergedPayload = {\n ...payload,\n attributes: joinIfArray(payload.attributes),\n values: joinIfArray(payload.values),\n };\n return t(translationKey, mergedPayload);\n};\n\nconst onPageChange = page => {\n router.push({ name: 'auditlogs_list', query: { page: page } });\n};\n\nonMounted(() => {\n store.dispatch('agents/get');\n fetchAuditLogs(routerPage.value);\n});\n\nwatch(routerPage, (newPage, oldPage) => {\n if (newPage !== oldPage) {\n fetchAuditLogs(newPage);\n }\n});\n\nconst tableHeaders = computed(() => {\n return [\n t('AUDIT_LOGS.LIST.TABLE_HEADER.ACTIVITY'),\n t('AUDIT_LOGS.LIST.TABLE_HEADER.TIME'),\n t('AUDIT_LOGS.LIST.TABLE_HEADER.IP_ADDRESS'),\n ];\n});\n</script>\n\n<template>\n <div class=\"flex-1 overflow-auto\">\n <BaseSettingsHeader\n :title=\"$t('AUDIT_LOGS.HEADER')\"\n :description=\"$t('AUDIT_LOGS.DESCRIPTION')\"\n :link-text=\"$t('AUDIT_LOGS.LEARN_MORE')\"\n feature-name=\"audit_logs\"\n />\n\n <div class=\"mt-6 flex-1 text-n-slate-11\">\n <woot-loading-state\n v-if=\"uiFlags.fetchingList\"\n :message=\"$t('AUDIT_LOGS.LOADING')\"\n />\n <p\n v-else-if=\"!records.length\"\n class=\"flex flex-col items-center justify-center h-full text-base p-8\"\n >\n {{ $t('AUDIT_LOGS.LIST.404') }}\n </p>\n <div v-else class=\"min-w-full overflow-x-auto\">\n <table class=\"divide-y divide-n-weak\">\n <thead>\n <th\n v-for=\"thHeader in tableHeaders\"\n :key=\"thHeader\"\n class=\"py-4 ltr:pr-4 rtl:pl-4 text-left font-semibold text-n-slate-11\"\n >\n {{ thHeader }}\n </th>\n </thead>\n <tbody class=\"divide-y divide-n-weak text-n-slate-11\">\n <tr v-for=\"auditLogItem in records\" :key=\"auditLogItem.id\">\n <td class=\"py-4 ltr:pr-4 rtl:pl-4 break-all whitespace-nowrap\">\n {{ generateLogText(auditLogItem) }}\n </td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4 break-all whitespace-nowrap\">\n {{\n messageTimestamp(\n auditLogItem.created_at,\n 'MMM dd, yyyy hh:mm a'\n )\n }}\n </td>\n <td class=\"py-4 w-[8.75rem]\">\n {{ auditLogItem.remote_address }}\n </td>\n </tr>\n </tbody>\n </table>\n <TableFooter\n :current-page=\"Number(meta.currentPage)\"\n :total-count=\"meta.totalEntries\"\n :page-size=\"meta.perPage\"\n class=\"border-n-weak border-t !px-0 py-4\"\n @page-change=\"onPageChange\"\n />\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/auditlogs/audit.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/AddAutomationRule.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.EVENTS.${event.value}`' dynamic key is used'","line":101,"column":16,"nodeType":"CallExpression","endLine":101,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ACTIONS.${action.label}`' dynamic key is used'","line":119,"column":16,"nodeType":"CallExpression","endLine":119,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ATTRIBUTES.${attribute.name}`' dynamic key is used'","line":165,"column":15,"nodeType":"CallExpression","endLine":165,"endColumn":65},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ERRORS.${errors[`condition_${i}`]}`' dynamic key is used'","line":270,"column":21,"nodeType":"CallExpression","endLine":270,"endColumn":72},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ERRORS.${errors[`action_${i}`]}`' dynamic key is used'","line":313,"column":21,"nodeType":"CallExpression","endLine":313,"endColumn":69}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport FilterInputBox from 'dashboard/components/widgets/FilterInput/Index.vue';\nimport AutomationActionInput from 'dashboard/components/widgets/AutomationActionInput.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\nimport { useAutomation } from 'dashboard/composables/useAutomation';\nimport { validateAutomation } from 'dashboard/helper/validations';\nimport {\n generateAutomationPayload,\n getAttributes,\n getInputType,\n getOperators,\n getCustomAttributeType,\n showActionInput,\n} from 'dashboard/helper/automationHelper';\nimport { AUTOMATION_RULE_EVENTS, AUTOMATION_ACTION_TYPES } from './constants';\n\nconst start_value = {\n name: null,\n description: null,\n event_name: 'conversation_created',\n conditions: [\n {\n attribute_key: 'status',\n filter_operator: 'equal_to',\n values: '',\n query_operator: 'and',\n custom_attribute_type: '',\n },\n ],\n actions: [\n {\n action_name: 'assign_agent',\n action_params: [],\n },\n ],\n};\n\nexport default {\n components: {\n FilterInputBox,\n AutomationActionInput,\n NextButton,\n },\n props: {\n onClose: {\n type: Function,\n default: () => {},\n },\n },\n emits: ['saveAutomation'],\n setup() {\n const {\n automation,\n automationTypes,\n onEventChange,\n getConditionDropdownValues,\n appendNewCondition,\n appendNewAction,\n removeFilter,\n removeAction,\n resetFilter,\n resetAction,\n getActionDropdownValues,\n manifestCustomAttributes,\n } = useAutomation(start_value);\n return {\n automation,\n automationTypes,\n onEventChange,\n getConditionDropdownValues,\n appendNewCondition,\n appendNewAction,\n removeFilter,\n removeAction,\n resetFilter,\n resetAction,\n getActionDropdownValues,\n manifestCustomAttributes,\n };\n },\n data() {\n return {\n automationRuleEvent: AUTOMATION_RULE_EVENTS[0].key,\n automationMutated: false,\n show: true,\n showDeleteConfirmationModal: false,\n allCustomAttributes: [],\n mode: 'create',\n errors: {},\n };\n },\n computed: {\n ...mapGetters({\n accountId: 'getCurrentAccountId',\n isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',\n }),\n automationRuleEvents() {\n return AUTOMATION_RULE_EVENTS.map(event => ({\n ...event,\n value: this.$t(`AUTOMATION.EVENTS.${event.value}`),\n }));\n },\n hasAutomationMutated() {\n if (\n this.automation.conditions[0].values ||\n this.automation.actions[0].action_params.length\n )\n return true;\n return false;\n },\n automationActionTypes() {\n const actionTypes = this.isFeatureEnabled('sla')\n ? AUTOMATION_ACTION_TYPES\n : AUTOMATION_ACTION_TYPES.filter(({ key }) => key !== 'add_sla');\n\n return actionTypes.map(action => ({\n ...action,\n label: this.$t(`AUTOMATION.ACTIONS.${action.label}`),\n }));\n },\n },\n mounted() {\n this.$store.dispatch('inboxes/get');\n this.$store.dispatch('agents/get');\n this.$store.dispatch('contacts/get');\n this.$store.dispatch('teams/get');\n this.$store.dispatch('labels/get');\n this.$store.dispatch('campaigns/get');\n this.allCustomAttributes = this.$store.getters['attributes/getAttributes'];\n this.manifestCustomAttributes();\n },\n methods: {\n getAttributes,\n getInputType,\n getOperators,\n getCustomAttributeType,\n showActionInput,\n isFeatureEnabled(flag) {\n return this.isFeatureEnabledonAccount(this.accountId, flag);\n },\n emitSaveAutomation() {\n this.errors = validateAutomation(this.automation);\n if (Object.keys(this.errors).length === 0) {\n const automation = generateAutomationPayload(this.automation);\n this.$emit('saveAutomation', automation, this.mode);\n }\n },\n getTranslatedAttributes(type, event) {\n return getAttributes(type, event).map(attribute => {\n // Skip translation\n // 1. If customAttributeType key is present then its rendering attributes from API\n // 2. If contact_custom_attribute or conversation_custom_attribute is present then its rendering section title\n const skipTranslation =\n attribute.customAttributeType ||\n [\n 'contact_custom_attribute',\n 'conversation_custom_attribute',\n ].includes(attribute.key);\n\n return {\n ...attribute,\n name: skipTranslation\n ? attribute.name\n : this.$t(`AUTOMATION.ATTRIBUTES.${attribute.name}`),\n };\n });\n },\n },\n};\n</script>\n\n<template>\n <div>\n <woot-modal-header :header-title=\"$t('AUTOMATION.ADD.TITLE')\" />\n <div class=\"flex flex-col modal-content\">\n <div class=\"w-full\">\n <woot-input\n v-model=\"automation.name\"\n :label=\"$t('AUTOMATION.ADD.FORM.NAME.LABEL')\"\n type=\"text\"\n :class=\"{ error: errors.name }\"\n :error=\"errors.name ? $t('AUTOMATION.ADD.FORM.NAME.ERROR') : ''\"\n :placeholder=\"$t('AUTOMATION.ADD.FORM.NAME.PLACEHOLDER')\"\n />\n <woot-input\n v-model=\"automation.description\"\n :label=\"$t('AUTOMATION.ADD.FORM.DESC.LABEL')\"\n type=\"text\"\n :class=\"{ error: errors.description }\"\n :error=\"\n errors.description ? $t('AUTOMATION.ADD.FORM.DESC.ERROR') : ''\n \"\n :placeholder=\"$t('AUTOMATION.ADD.FORM.DESC.PLACEHOLDER')\"\n />\n <div class=\"mb-6\">\n <label :class=\"{ error: errors.event_name }\">\n {{ $t('AUTOMATION.ADD.FORM.EVENT.LABEL') }}\n <select\n v-model=\"automation.event_name\"\n class=\"m-0\"\n @change=\"onEventChange(automation)\"\n >\n <option\n v-for=\"event in automationRuleEvents\"\n :key=\"event.key\"\n :value=\"event.key\"\n >\n {{ event.value }}\n </option>\n </select>\n <span v-if=\"errors.event_name\" class=\"message\">\n {{ $t('AUTOMATION.ADD.FORM.EVENT.ERROR') }}\n </span>\n </label>\n <p\n v-if=\"hasAutomationMutated\"\n class=\"text-xs text-right text-n-teal-10 pt-1\"\n >\n {{ $t('AUTOMATION.FORM.RESET_MESSAGE') }}\n </p>\n </div>\n <!-- // Conditions Start -->\n <section>\n <label>\n {{ $t('AUTOMATION.ADD.FORM.CONDITIONS.LABEL') }}\n </label>\n <div\n class=\"w-full p-4 mb-4 border border-solid rounded-lg bg-n-slate-2 dark:bg-n-solid-2 border-n-strong\"\n >\n <FilterInputBox\n v-for=\"(condition, i) in automation.conditions\"\n :key=\"i\"\n v-model=\"automation.conditions[i]\"\n :filter-attributes=\"\n getTranslatedAttributes(automationTypes, automation.event_name)\n \"\n :input-type=\"\n getInputType(\n allCustomAttributes,\n automationTypes,\n automation,\n automation.conditions[i].attribute_key\n )\n \"\n :operators=\"\n getOperators(\n allCustomAttributes,\n automationTypes,\n automation,\n mode,\n automation.conditions[i].attribute_key\n )\n \"\n :dropdown-values=\"\n getConditionDropdownValues(\n automation.conditions[i].attribute_key\n )\n \"\n :show-query-operator=\"i !== automation.conditions.length - 1\"\n :custom-attribute-type=\"\n getCustomAttributeType(\n automationTypes,\n automation,\n automation.conditions[i].attribute_key\n )\n \"\n :error-message=\"\n errors[`condition_${i}`]\n ? $t(`AUTOMATION.ERRORS.${errors[`condition_${i}`]}`)\n : ''\n \"\n @reset-filter=\"resetFilter(i, automation.conditions[i])\"\n @remove-filter=\"removeFilter(i)\"\n />\n <div class=\"mt-4\">\n <NextButton\n icon=\"i-lucide-plus\"\n blue\n faded\n sm\n :label=\"$t('AUTOMATION.ADD.CONDITION_BUTTON_LABEL')\"\n @click=\"appendNewCondition\"\n />\n </div>\n </div>\n </section>\n <!-- // Conditions End -->\n <!-- // Actions Start -->\n <section>\n <label>\n {{ $t('AUTOMATION.ADD.FORM.ACTIONS.LABEL') }}\n </label>\n <div\n class=\"w-full p-4 mb-4 border border-solid rounded-lg bg-n-slate-2 dark:bg-n-solid-2 border-n-strong\"\n >\n <AutomationActionInput\n v-for=\"(action, i) in automation.actions\"\n :key=\"i\"\n v-model=\"automation.actions[i]\"\n :action-types=\"automationActionTypes\"\n :dropdown-values=\"\n getActionDropdownValues(automation.actions[i].action_name)\n \"\n :show-action-input=\"\n showActionInput(\n automationActionTypes,\n automation.actions[i].action_name\n )\n \"\n :error-message=\"\n errors[`action_${i}`]\n ? $t(`AUTOMATION.ERRORS.${errors[`action_${i}`]}`)\n : ''\n \"\n @reset-action=\"resetAction(i)\"\n @remove-action=\"removeAction(i)\"\n />\n <div class=\"mt-4\">\n <NextButton\n icon=\"i-lucide-plus\"\n blue\n faded\n sm\n :label=\"$t('AUTOMATION.ADD.ACTION_BUTTON_LABEL')\"\n @click=\"appendNewAction\"\n />\n </div>\n </div>\n </section>\n <!-- // Actions End -->\n <div class=\"w-full\">\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('AUTOMATION.ADD.CANCEL_BUTTON_TEXT')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n solid\n blue\n type=\"submit\"\n :label=\"$t('AUTOMATION.ADD.SUBMIT')\"\n @click=\"emitSaveAutomation\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/AutomationRuleRow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/EditAutomationRule.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.EVENTS.${event.value}`' dynamic key is used'","line":89,"column":16,"nodeType":"CallExpression","endLine":89,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ACTIONS.${action.label}`' dynamic key is used'","line":107,"column":16,"nodeType":"CallExpression","endLine":107,"endColumn":61},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ATTRIBUTES.${attribute.name}`' dynamic key is used'","line":155,"column":15,"nodeType":"CallExpression","endLine":155,"endColumn":65},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ERRORS.${errors[`condition_${i}`]}`' dynamic key is used'","line":253,"column":21,"nodeType":"CallExpression","endLine":253,"endColumn":72},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`AUTOMATION.ERRORS.${errors[`action_${i}`]}`' dynamic key is used'","line":291,"column":21,"nodeType":"CallExpression","endLine":291,"endColumn":69}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { useAutomation } from 'dashboard/composables/useAutomation';\nimport { useEditableAutomation } from 'dashboard/composables/useEditableAutomation';\nimport FilterInputBox from 'dashboard/components/widgets/FilterInput/Index.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\nimport AutomationActionInput from 'dashboard/components/widgets/AutomationActionInput.vue';\nimport {\n getFileName,\n generateAutomationPayload,\n getAttributes,\n getInputType,\n getOperators,\n getCustomAttributeType,\n showActionInput,\n} from 'dashboard/helper/automationHelper';\nimport { validateAutomation } from 'dashboard/helper/validations';\n\nimport { AUTOMATION_RULE_EVENTS, AUTOMATION_ACTION_TYPES } from './constants';\n\nexport default {\n components: {\n FilterInputBox,\n NextButton,\n AutomationActionInput,\n },\n props: {\n onClose: {\n type: Function,\n default: () => {},\n },\n selectedResponse: {\n type: Object,\n default: () => {},\n },\n },\n emits: ['saveAutomation'],\n setup() {\n const {\n automation,\n automationTypes,\n onEventChange,\n getConditionDropdownValues,\n appendNewCondition,\n appendNewAction,\n removeFilter,\n removeAction,\n resetFilter,\n resetAction,\n getActionDropdownValues,\n manifestCustomAttributes,\n } = useAutomation();\n const { formatAutomation } = useEditableAutomation();\n return {\n automation,\n automationTypes,\n onEventChange,\n getConditionDropdownValues,\n appendNewCondition,\n appendNewAction,\n removeFilter,\n removeAction,\n resetFilter,\n resetAction,\n getActionDropdownValues,\n formatAutomation,\n manifestCustomAttributes,\n };\n },\n data() {\n return {\n automationRuleEvent: AUTOMATION_RULE_EVENTS[0].key,\n automationMutated: false,\n show: true,\n showDeleteConfirmationModal: false,\n allCustomAttributes: [],\n mode: 'edit',\n errors: {},\n };\n },\n computed: {\n ...mapGetters({\n accountId: 'getCurrentAccountId',\n isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',\n }),\n automationRuleEvents() {\n return AUTOMATION_RULE_EVENTS.map(event => ({\n ...event,\n value: this.$t(`AUTOMATION.EVENTS.${event.value}`),\n }));\n },\n hasAutomationMutated() {\n if (\n this.automation.conditions[0].values ||\n this.automation.actions[0].action_params.length\n )\n return true;\n return false;\n },\n automationActionTypes() {\n const actionTypes = this.isFeatureEnabled('sla')\n ? AUTOMATION_ACTION_TYPES\n : AUTOMATION_ACTION_TYPES.filter(({ key }) => key !== 'add_sla');\n\n return actionTypes.map(action => ({\n ...action,\n label: this.$t(`AUTOMATION.ACTIONS.${action.label}`),\n }));\n },\n },\n mounted() {\n this.manifestCustomAttributes();\n this.allCustomAttributes = this.$store.getters['attributes/getAttributes'];\n\n this.automation = this.formatAutomation(\n this.selectedResponse,\n this.allCustomAttributes,\n this.automationTypes,\n this.automationActionTypes\n );\n },\n methods: {\n getFileName,\n getAttributes,\n getInputType,\n getOperators,\n getCustomAttributeType,\n showActionInput,\n isFeatureEnabled(flag) {\n return this.isFeatureEnabledonAccount(this.accountId, flag);\n },\n emitSaveAutomation() {\n this.errors = validateAutomation(this.automation);\n if (Object.keys(this.errors).length === 0) {\n const automation = generateAutomationPayload(this.automation);\n this.$emit('saveAutomation', automation, this.mode);\n }\n },\n getTranslatedAttributes(type, event) {\n return getAttributes(type, event).map(attribute => {\n // Skip translation\n // 1. If customAttributeType key is present then its rendering attributes from API\n // 2. If contact_custom_attribute or conversation_custom_attribute is present then its rendering section title\n const skipTranslation =\n attribute.customAttributeType ||\n [\n 'contact_custom_attribute',\n 'conversation_custom_attribute',\n ].includes(attribute.key);\n\n return {\n ...attribute,\n name: skipTranslation\n ? attribute.name\n : this.$t(`AUTOMATION.ATTRIBUTES.${attribute.name}`),\n };\n });\n },\n },\n};\n</script>\n\n<template>\n <div>\n <woot-modal-header :header-title=\"$t('AUTOMATION.EDIT.TITLE')\" />\n <div class=\"flex flex-col modal-content\">\n <div v-if=\"automation\" class=\"w-full\">\n <woot-input\n v-model=\"automation.name\"\n :label=\"$t('AUTOMATION.ADD.FORM.NAME.LABEL')\"\n type=\"text\"\n :class=\"{ error: errors.name }\"\n :error=\"errors.name ? $t('AUTOMATION.ADD.FORM.NAME.ERROR') : ''\"\n :placeholder=\"$t('AUTOMATION.ADD.FORM.NAME.PLACEHOLDER')\"\n />\n <woot-input\n v-model=\"automation.description\"\n :label=\"$t('AUTOMATION.ADD.FORM.DESC.LABEL')\"\n type=\"text\"\n :class=\"{ error: errors.description }\"\n :error=\"\n errors.description ? $t('AUTOMATION.ADD.FORM.DESC.ERROR') : ''\n \"\n :placeholder=\"$t('AUTOMATION.ADD.FORM.DESC.PLACEHOLDER')\"\n />\n <div class=\"event_wrapper\">\n <label :class=\"{ error: errors.event_name }\">\n {{ $t('AUTOMATION.ADD.FORM.EVENT.LABEL') }}\n <select\n v-model=\"automation.event_name\"\n @change=\"onEventChange(automation)\"\n >\n <option\n v-for=\"event in automationRuleEvents\"\n :key=\"event.key\"\n :value=\"event.key\"\n >\n {{ event.value }}\n </option>\n </select>\n <span v-if=\"errors.event_name\" class=\"message\">\n {{ $t('AUTOMATION.ADD.FORM.EVENT.ERROR') }}\n </span>\n </label>\n </div>\n <!-- // Conditions Start -->\n <section>\n <label>\n {{ $t('AUTOMATION.ADD.FORM.CONDITIONS.LABEL') }}\n </label>\n <div\n class=\"w-full p-4 mb-4 border border-solid rounded-lg bg-n-slate-2 dark:bg-n-solid-2 border-n-strong\"\n >\n <FilterInputBox\n v-for=\"(condition, i) in automation.conditions\"\n :key=\"i\"\n v-model=\"automation.conditions[i]\"\n :filter-attributes=\"\n getTranslatedAttributes(automationTypes, automation.event_name)\n \"\n :input-type=\"\n getInputType(\n allCustomAttributes,\n automationTypes,\n automation,\n automation.conditions[i].attribute_key\n )\n \"\n :operators=\"\n getOperators(\n allCustomAttributes,\n automationTypes,\n automation,\n mode,\n automation.conditions[i].attribute_key\n )\n \"\n :dropdown-values=\"\n getConditionDropdownValues(\n automation.conditions[i].attribute_key\n )\n \"\n :custom-attribute-type=\"\n getCustomAttributeType(\n automationTypes,\n automation,\n automation.conditions[i].attribute_key\n )\n \"\n :show-query-operator=\"i !== automation.conditions.length - 1\"\n :error-message=\"\n errors[`condition_${i}`]\n ? $t(`AUTOMATION.ERRORS.${errors[`condition_${i}`]}`)\n : ''\n \"\n @reset-filter=\"resetFilter(i, automation.conditions[i])\"\n @remove-filter=\"removeFilter(i)\"\n />\n <div class=\"mt-4\">\n <NextButton\n icon=\"i-lucide-plus\"\n blue\n faded\n sm\n :label=\"$t('AUTOMATION.ADD.CONDITION_BUTTON_LABEL')\"\n @click=\"appendNewCondition\"\n />\n </div>\n </div>\n </section>\n <!-- // Conditions End -->\n <!-- // Actions Start -->\n <section>\n <label>\n {{ $t('AUTOMATION.ADD.FORM.ACTIONS.LABEL') }}\n </label>\n <div\n class=\"w-full p-4 mb-4 border border-solid rounded-lg bg-n-slate-2 dark:bg-n-solid-2 border-n-strong\"\n >\n <AutomationActionInput\n v-for=\"(action, i) in automation.actions\"\n :key=\"i\"\n v-model=\"automation.actions[i]\"\n :action-types=\"automationActionTypes\"\n :dropdown-values=\"getActionDropdownValues(action.action_name)\"\n :show-action-input=\"\n showActionInput(automationActionTypes, action.action_name)\n \"\n :error-message=\"\n errors[`action_${i}`]\n ? $t(`AUTOMATION.ERRORS.${errors[`action_${i}`]}`)\n : ''\n \"\n :initial-file-name=\"getFileName(action, automation.files)\"\n @reset-action=\"resetAction(i)\"\n @remove-action=\"removeAction(i)\"\n />\n <div class=\"mt-4\">\n <NextButton\n icon=\"i-lucide-plus\"\n blue\n faded\n sm\n :label=\"$t('AUTOMATION.ADD.ACTION_BUTTON_LABEL')\"\n @click=\"appendNewAction\"\n />\n </div>\n </div>\n </section>\n <!-- // Actions End -->\n <div class=\"w-full\">\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('AUTOMATION.EDIT.CANCEL_BUTTON_TEXT')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n solid\n blue\n type=\"submit\"\n :label=\"$t('AUTOMATION.EDIT.SUBMIT')\"\n @click=\"emitSaveAutomation\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.event_wrapper {\n select {\n @apply m-0;\n }\n .info-message {\n @apply text-xs text-n-teal-10 text-right;\n }\n\n @apply mb-6;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/automation.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/automation/operators.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/billing.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/components/BillingCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/components/BillingHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/components/BillingMeter.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' / ' is used","line":40,"column":45,"nodeType":null,"endLine":40,"endColumn":48,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,765],"text":"<i18n>\n{\n \"en\": {\n \" / \": \" / \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nconst props = defineProps({\n title: {\n type: String,\n required: true,\n },\n consumed: {\n type: Number,\n required: true,\n },\n totalCount: {\n type: Number,\n required: true,\n },\n});\n\nconst percent = computed(() =>\n Math.round((props.consumed / props.totalCount) * 100)\n);\n\nconst colorClass = computed(() => {\n if (percent.value < 50) {\n return 'bg-n-teal-10';\n }\n if (percent.value < 80) {\n return 'bg-n-amber-10';\n }\n return 'bg-n-ruby-10';\n});\n</script>\n\n<template>\n <div\n class=\"flex gap-5 items-center justify-between text-xs uppercase text-n-slate-10\"\n >\n <div class=\"font-medium tracking-wider\">\n {{ title }}\n </div>\n <div class=\"tabular-nums\">{{ consumed }}{{$t(' / ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nconst props = defineProps({\n title: {\n type: String,\n required: true,\n },\n consumed: {\n type: Number,\n required: true,\n },\n totalCount: {\n type: Number,\n required: true,\n },\n});\n\nconst percent = computed(() =>\n Math.round((props.consumed / props.totalCount) * 100)\n);\n\nconst colorClass = computed(() => {\n if (percent.value < 50) {\n return 'bg-n-teal-10';\n }\n if (percent.value < 80) {\n return 'bg-n-amber-10';\n }\n return 'bg-n-ruby-10';\n});\n</script>\n\n<template>\n <div\n class=\"flex gap-5 items-center justify-between text-xs uppercase text-n-slate-10\"\n >\n <div class=\"font-medium tracking-wider\">\n {{ title }}\n </div>\n <div class=\"tabular-nums\">{{ consumed }} / {{ totalCount }}</div>\n </div>\n <div class=\"rounded-full overflow-hidden h-2 w-full bg-n-slate-4 mt-2\">\n <div class=\"h-2\" :class=\"colorClass\" :style=\"{ width: `${percent}%` }\" />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/components/CreditPackageCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/components/DetailItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/billing/components/PurchaseCreditsModal.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/canned/AddCanned.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/canned/EditCanned.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/canned/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/components/BasePaywallModal.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.PAYWALL.TITLE`' dynamic key is used'","line":41,"column":12,"nodeType":"CallExpression","endLine":41,"endColumn":48},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.${i18nKey}.AVAILABLE_ON`' dynamic key is used'","line":45,"column":25,"nodeType":"CallExpression","endLine":45,"endColumn":71},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.${i18nKey}.UPGRADE_PROMPT`' dynamic key is used'","line":49,"column":10,"nodeType":"CallExpression","endLine":49,"endColumn":58},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.ENTERPRISE_PAYWALL.ASK_ADMIN`' dynamic key is used'","line":51,"column":12,"nodeType":"CallExpression","endLine":51,"endColumn":63},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.PAYWALL.UPGRADE_NOW`' dynamic key is used'","line":56,"column":12,"nodeType":"CallExpression","endLine":56,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.PAYWALL.CANCEL_ANYTIME`' dynamic key is used'","line":59,"column":12,"nodeType":"CallExpression","endLine":59,"endColumn":57},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${featurePrefix}.PAYWALL.UPGRADE_NOW`' dynamic key is used'","line":65,"column":14,"nodeType":"CallExpression","endLine":65,"endColumn":56}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport Icon from 'next/icon/Icon.vue';\nimport ButtonV4 from 'next/button/Button.vue';\n\ndefineProps({\n featurePrefix: {\n type: String,\n required: true,\n },\n i18nKey: {\n type: String,\n required: true,\n },\n isOnChatwootCloud: {\n type: Boolean,\n default: false,\n },\n isSuperAdmin: {\n type: Boolean,\n default: false,\n },\n});\n\nconst emit = defineEmits(['upgrade']);\n</script>\n\n<template>\n <div\n class=\"flex flex-col max-w-md px-6 py-6 border shadow bg-n-solid-1 rounded-xl border-n-weak\"\n >\n <div class=\"flex items-center w-full gap-2 mb-4\">\n <span\n class=\"flex items-center justify-center w-6 h-6 rounded-full bg-n-solid-blue\"\n >\n <Icon\n class=\"flex-shrink-0 text-n-brand size-[14px]\"\n icon=\"i-lucide-lock-keyhole\"\n />\n </span>\n <span class=\"text-base font-medium text-n-slate-12\">\n {{ $t(`${featurePrefix}.PAYWALL.TITLE`) }}\n </span>\n </div>\n <p\n v-dompurify-html=\"$t(`${featurePrefix}.${i18nKey}.AVAILABLE_ON`)\"\n class=\"text-sm font-normal text-n-slate-11\"\n />\n <p class=\"text-sm font-normal text-n-slate-11\">\n {{ $t(`${featurePrefix}.${i18nKey}.UPGRADE_PROMPT`) }}\n <span v-if=\"!isOnChatwootCloud && !isSuperAdmin\">\n {{ $t(`${featurePrefix}.ENTERPRISE_PAYWALL.ASK_ADMIN`) }}\n </span>\n </p>\n <template v-if=\"isOnChatwootCloud\">\n <ButtonV4 blue solid md @click=\"emit('upgrade')\">\n {{ $t(`${featurePrefix}.PAYWALL.UPGRADE_NOW`) }}\n </ButtonV4>\n <span class=\"mt-2 text-xs tracking-tight text-center text-n-slate-11\">\n {{ $t(`${featurePrefix}.PAYWALL.CANCEL_ANYTIME`) }}\n </span>\n </template>\n <template v-else-if=\"isSuperAdmin\">\n <a href=\"/super_admin\" class=\"block w-full\">\n <ButtonV4 solid blue md class=\"w-full\">\n {{ $t(`${featurePrefix}.PAYWALL.UPGRADE_NOW`) }}\n </ButtonV4>\n </a>\n </template>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/components/BaseSettingsListItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/customRoles/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRoleModal.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getTranslationKey('TITLE')' dynamic key is used'","line":112,"column":35,"nodeType":"CallExpression","endLine":112,"endColumn":64},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getTranslationKey('DESC')' dynamic key is used'","line":113,"column":41,"nodeType":"CallExpression","endLine":113,"endColumn":69},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getTranslationKey('SUBMIT')' dynamic key is used'","line":114,"column":41,"nodeType":"CallExpression","endLine":114,"endColumn":71},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CUSTOM_ROLE.PERMISSIONS.${permission.toUpperCase()}`' dynamic key is used'","line":207,"column":18,"nodeType":"CallExpression","endLine":207,"endColumn":75}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, reactive, computed, onMounted, watch } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nimport { useI18n } from 'vue-i18n';\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, minLength } from '@vuelidate/validators';\nimport { useAlert } from 'dashboard/composables';\nimport {\n AVAILABLE_CUSTOM_ROLE_PERMISSIONS,\n MANAGE_ALL_CONVERSATION_PERMISSIONS,\n CONVERSATION_UNASSIGNED_PERMISSIONS,\n CONVERSATION_PARTICIPATING_PERMISSIONS,\n} from 'dashboard/constants/permissions.js';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n mode: {\n type: String,\n default: 'add',\n validator: value => ['add', 'edit'].includes(value),\n },\n selectedRole: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst emit = defineEmits(['close']);\n\nconst store = useStore();\nconst { t } = useI18n();\n\nconst name = ref('');\nconst description = ref('');\nconst selectedPermissions = ref([]);\n\nconst nameInput = ref(null);\n\nconst addCustomRole = reactive({\n showLoading: false,\n message: '',\n});\n\nconst rules = computed(() => ({\n name: { required, minLength: minLength(2) },\n description: { required },\n selectedPermissions: { required, minLength: minLength(1) },\n}));\n\nconst v$ = useVuelidate(rules, { name, description, selectedPermissions });\n\nconst resetForm = () => {\n name.value = '';\n description.value = '';\n selectedPermissions.value = [];\n v$.value.$reset();\n};\n\nconst populateEditForm = () => {\n name.value = props.selectedRole.name || '';\n description.value = props.selectedRole.description || '';\n selectedPermissions.value = props.selectedRole.permissions || [];\n};\n\nwatch(\n selectedPermissions,\n (newValue, oldValue) => {\n // Check if manage all conversation permission is added or removed\n const hasAddedManageAllConversation =\n newValue.includes(MANAGE_ALL_CONVERSATION_PERMISSIONS) &&\n !oldValue.includes(MANAGE_ALL_CONVERSATION_PERMISSIONS);\n const hasRemovedManageAllConversation =\n oldValue.includes(MANAGE_ALL_CONVERSATION_PERMISSIONS) &&\n !newValue.includes(MANAGE_ALL_CONVERSATION_PERMISSIONS);\n\n if (hasAddedManageAllConversation) {\n // If manage all conversation permission is added,\n // then add unassigned and participating permissions automatically\n selectedPermissions.value = [\n ...new Set([\n ...selectedPermissions.value,\n CONVERSATION_UNASSIGNED_PERMISSIONS,\n CONVERSATION_PARTICIPATING_PERMISSIONS,\n ]),\n ];\n } else if (hasRemovedManageAllConversation) {\n // If manage all conversation permission is removed,\n // then only remove manage all conversation permission\n selectedPermissions.value = selectedPermissions.value.filter(\n p => p !== MANAGE_ALL_CONVERSATION_PERMISSIONS\n );\n }\n },\n { deep: true }\n);\n\nonMounted(() => {\n if (props.mode === 'edit') {\n populateEditForm();\n }\n // Focus the name input when mounted\n nameInput.value?.focus();\n});\n\nconst getTranslationKey = base => {\n return props.mode === 'edit'\n ? `CUSTOM_ROLE.EDIT.${base}`\n : `CUSTOM_ROLE.ADD.${base}`;\n};\n\nconst modalTitle = computed(() => t(getTranslationKey('TITLE')));\nconst modalDescription = computed(() => t(getTranslationKey('DESC')));\nconst submitButtonText = computed(() => t(getTranslationKey('SUBMIT')));\n\nconst handleCustomRole = async () => {\n v$.value.$touch();\n if (v$.value.$invalid) return;\n\n addCustomRole.showLoading = true;\n try {\n const roleData = {\n name: name.value,\n description: description.value,\n permissions: selectedPermissions.value,\n };\n\n if (props.mode === 'edit') {\n await store.dispatch('customRole/updateCustomRole', {\n id: props.selectedRole.id,\n ...roleData,\n });\n useAlert(t('CUSTOM_ROLE.EDIT.API.SUCCESS_MESSAGE'));\n } else {\n await store.dispatch('customRole/createCustomRole', roleData);\n useAlert(t('CUSTOM_ROLE.ADD.API.SUCCESS_MESSAGE'));\n }\n\n resetForm();\n emit('close');\n } catch (error) {\n const errorMessage =\n error?.message || t(`CUSTOM_ROLE.FORM.API.ERROR_MESSAGE`);\n useAlert(errorMessage);\n } finally {\n addCustomRole.showLoading = false;\n }\n};\n\nconst isSubmitDisabled = computed(\n () => v$.value.$invalid || addCustomRole.showLoading\n);\n</script>\n\n<template>\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header\n :header-title=\"modalTitle\"\n :header-content=\"modalDescription\"\n />\n <form class=\"flex flex-col w-full\" @submit.prevent=\"handleCustomRole\">\n <div class=\"w-full\">\n <label :class=\"{ error: v$.name.$error }\">\n {{ $t('CUSTOM_ROLE.FORM.NAME.LABEL') }}\n <input\n ref=\"nameInput\"\n v-model.trim=\"name\"\n type=\"text\"\n :placeholder=\"$t('CUSTOM_ROLE.FORM.NAME.PLACEHOLDER')\"\n @blur=\"v$.name.$touch\"\n />\n </label>\n </div>\n\n <div class=\"w-full\">\n <label :class=\"{ error: v$.description.$error }\">\n {{ $t('CUSTOM_ROLE.FORM.DESCRIPTION.LABEL') }}\n\n <textarea\n v-model=\"description\"\n :rows=\"3\"\n :placeholder=\"$t('CUSTOM_ROLE.FORM.DESCRIPTION.PLACEHOLDER')\"\n @blur=\"v$.description.$touch\"\n />\n </label>\n </div>\n\n <div class=\"w-full\">\n <label :class=\"{ 'text-n-ruby-9': v$.selectedPermissions.$error }\">\n {{ $t('CUSTOM_ROLE.FORM.PERMISSIONS.LABEL') }}\n </label>\n <div class=\"flex flex-col gap-2.5 mb-4 mt-2\">\n <div\n v-for=\"permission in AVAILABLE_CUSTOM_ROLE_PERMISSIONS\"\n :key=\"permission\"\n class=\"flex items-center\"\n >\n <input\n :id=\"permission\"\n v-model=\"selectedPermissions\"\n type=\"checkbox\"\n :value=\"permission\"\n name=\"permissions\"\n class=\"ltr:mr-2 rtl:ml-2\"\n />\n <label :for=\"permission\" class=\"text-sm font-normal\">\n {{ $t(`CUSTOM_ROLE.PERMISSIONS.${permission.toUpperCase()}`) }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <Button\n faded\n slate\n type=\"reset\"\n :label=\"$t('CUSTOM_ROLE.FORM.CANCEL_BUTTON_TEXT')\"\n @click.prevent=\"emit('close')\"\n />\n <Button\n type=\"submit\"\n :label=\"submitButtonText\"\n :disabled=\"isSubmitDisabled\"\n :is-loading=\"addCustomRole.showLoading\"\n />\n </div>\n </form>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRolePaywall.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRoleTableBody.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getI18nKey('CUSTOM_ROLE.PERMISSIONS',event)' dynamic key is used'","line":24,"column":19,"nodeType":"CallExpression","endLine":24,"endColumn":66}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useI18n } from 'vue-i18n';\nimport { getI18nKey } from 'dashboard/routes/dashboard/settings/helper/settingsHelper';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\ndefineProps({\n roles: {\n type: Array,\n required: true,\n },\n loading: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst emit = defineEmits(['edit', 'delete']);\n\nconst { t } = useI18n();\n\nconst getFormattedPermissions = role => {\n return role.permissions\n .map(event => t(getI18nKey('CUSTOM_ROLE.PERMISSIONS', event)))\n .join(', ');\n};\n</script>\n\n<template>\n <tbody class=\"divide-y divide-n-weak text-n-slate-11\">\n <tr v-for=\"(customRole, index) in roles\" :key=\"index\">\n <td\n class=\"max-w-xs py-4 ltr:pr-4 rtl:pl-4 font-medium truncate align-baseline\"\n :title=\"customRole.name\"\n >\n {{ customRole.name }}\n </td>\n <td\n class=\"py-4 ltr:pr-4 rtl:pl-4 whitespace-normal align-baseline md:break-words\"\n >\n {{ customRole.description }}\n </td>\n <td\n class=\"py-4 ltr:pr-4 rtl:pl-4 whitespace-normal align-baseline md:break-words\"\n >\n {{ getFormattedPermissions(customRole) }}\n </td>\n <td class=\"flex justify-end gap-1 py-4\">\n <Button\n v-tooltip.top=\"$t('CUSTOM_ROLE.EDIT.BUTTON_TEXT')\"\n icon=\"i-lucide-pen\"\n slate\n xs\n faded\n @click=\"emit('edit', customRole)\"\n />\n <Button\n v-tooltip.top=\"$t('CUSTOM_ROLE.DELETE.BUTTON_TEXT')\"\n icon=\"i-lucide-trash-2\"\n xs\n ruby\n faded\n :is-loading=\"loading[customRole.id]\"\n @click=\"emit('delete', customRole)\"\n />\n </td>\n </tr>\n </tbody>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/customRoles/customRole.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/helper/settingsHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/helper/spec/settingsHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/AddAgents.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/ChannelFactory.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/ChannelList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/FinishSetup.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":106,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":106,"endColumn":17,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"warn"},"fix":{"range":[2974,3033],"text":""},"desc":"Remove the console.warn()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":122,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":122,"endColumn":18,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[3433,3495],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/ImapSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/InboxChannels.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.CREATE_FLOW.${step}.TITLE`' dynamic key is used'","line":28,"column":14,"nodeType":"CallExpression","endLine":28,"endColumn":55},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.CREATE_FLOW.${step}.BODY`' dynamic key is used'","line":29,"column":13,"nodeType":"CallExpression","endLine":29,"endColumn":53}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport { useMapGetter } from 'dashboard/composables/store';\nimport { useBranding } from 'shared/composables/useBranding';\n\nimport PageHeader from '../SettingsSubPageHeader.vue';\n\nconst { t } = useI18n();\nconst route = useRoute();\nconst { replaceInstallationName } = useBranding();\n\nconst globalConfig = useMapGetter('globalConfig/get');\n\nconst createFlowSteps = computed(() => {\n const steps = ['CHANNEL', 'INBOX', 'AGENT', 'FINISH'];\n\n const routes = {\n CHANNEL: 'settings_inbox_new',\n INBOX: 'settings_inboxes_page_channel',\n AGENT: 'settings_inboxes_add_agents',\n FINISH: 'settings_inbox_finish',\n };\n\n return steps.map(step => {\n return {\n title: t(`INBOX_MGMT.CREATE_FLOW.${step}.TITLE`),\n body: t(`INBOX_MGMT.CREATE_FLOW.${step}.BODY`),\n route: routes[step],\n };\n });\n});\n\nconst isFirstStep = computed(() => {\n return route.name === 'settings_inbox_new';\n});\n\nconst isFinishStep = computed(() => {\n return route.name === 'settings_inbox_finish';\n});\n\nconst pageTitle = computed(() => {\n if (isFirstStep.value) {\n return t('INBOX_MGMT.ADD.AUTH.TITLE');\n }\n if (isFinishStep.value) {\n return t('INBOX_MGMT.ADD.AUTH.TITLE_FINISH');\n }\n return t('INBOX_MGMT.ADD.AUTH.TITLE_NEXT');\n});\n\nconst items = computed(() => {\n return createFlowSteps.value.map(item => ({\n ...item,\n body: replaceInstallationName(item.body),\n }));\n});\n</script>\n\n<template>\n <div class=\"mx-2 flex flex-col gap-6 mb-8\">\n <PageHeader class=\"block lg:hidden !mb-0\" :header-title=\"pageTitle\" />\n <div\n class=\"grid grid-cols-1 lg:grid-cols-8 lg:divide-x lg:divide-n-weak rounded-xl border border-n-weak min-h-[52rem]\"\n >\n <woot-wizard\n class=\"hidden lg:block col-span-2 h-fit py-8 px-6\"\n :global-config=\"globalConfig\"\n :items=\"items\"\n />\n <div class=\"col-span-6 overflow-hidden\">\n <router-view />\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/JasmineConfiguration.vue","messages":[{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":72,"column":76,"nodeType":"VText","messageId":"unexpected","endLine":74,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Jasmine AI Configuration\n ' is used","line":72,"column":76,"nodeType":null,"endLine":74,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1819],"text":"<i18n>\n{\n \"en\": {\n \"\\n Jasmine AI Configuration\\n \": \"\\n Jasmine AI Configuration\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">{{$t(`\n Jasmine AI Configuration\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":75,"column":63,"nodeType":"VText","messageId":"unexpected","endLine":77,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Configure the AI agent for this inbox.\n ' is used","line":75,"column":63,"nodeType":null,"endLine":77,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1945],"text":"<i18n>\n{\n \"en\": {\n \"\\n Configure the AI agent for this inbox.\\n \": \"\\n Configure the AI agent for this inbox.\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">\n Jasmine AI Configuration\n </h2>\n <p class=\"text-sm text-slate-600 dark:text-slate-400\">{{$t(`\n Configure the AI agent for this inbox.\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":87,"column":80,"nodeType":"VText","messageId":"unexpected","endLine":89,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Enable Jasmine AI Agent\n ' is used","line":87,"column":80,"nodeType":null,"endLine":89,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2368],"text":"<i18n>\n{\n \"en\": {\n \"\\n Enable Jasmine AI Agent\\n \": \"\\n Enable Jasmine AI Agent\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">\n Jasmine AI Configuration\n </h2>\n <p class=\"text-sm text-slate-600 dark:text-slate-400\">\n Configure the AI agent for this inbox.\n </p>\n </div>\n\n <div class=\"mb-6\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n v-model=\"isEnabled\"\n type=\"checkbox\"\n class=\"form-checkbox h-5 w-5 text-woot-500 rounded border-gray-300 focus:ring-woot-500\"\n />\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\">{{$t(`\n Enable Jasmine AI Agent\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":96,"column":10,"nodeType":"VText","messageId":"unexpected","endLine":98,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n System Prompt\n ' is used","line":96,"column":10,"nodeType":null,"endLine":98,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2573],"text":"<i18n>\n{\n \"en\": {\n \"\\n System Prompt\\n \": \"\\n System Prompt\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">\n Jasmine AI Configuration\n </h2>\n <p class=\"text-sm text-slate-600 dark:text-slate-400\">\n Configure the AI agent for this inbox.\n </p>\n </div>\n\n <div class=\"mb-6\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n v-model=\"isEnabled\"\n type=\"checkbox\"\n class=\"form-checkbox h-5 w-5 text-woot-500 rounded border-gray-300 focus:ring-woot-500\"\n />\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\">\n Enable Jasmine AI Agent\n </span>\n </label>\n </div>\n\n <div class=\"mb-6\">\n <label\n class=\"block text-sm font-medium text-slate-700 dark:text-slate-200 mb-2\"\n >{{$t(`\n System Prompt\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":105,"column":48,"nodeType":"VText","messageId":"unexpected","endLine":107,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Define the persona and behavioral rules for the agent.\n ' is used","line":105,"column":48,"nodeType":null,"endLine":107,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2981],"text":"<i18n>\n{\n \"en\": {\n \"\\n Define the persona and behavioral rules for the agent.\\n \": \"\\n Define the persona and behavioral rules for the agent.\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">\n Jasmine AI Configuration\n </h2>\n <p class=\"text-sm text-slate-600 dark:text-slate-400\">\n Configure the AI agent for this inbox.\n </p>\n </div>\n\n <div class=\"mb-6\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n v-model=\"isEnabled\"\n type=\"checkbox\"\n class=\"form-checkbox h-5 w-5 text-woot-500 rounded border-gray-300 focus:ring-woot-500\"\n />\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\">\n Enable Jasmine AI Agent\n </span>\n </label>\n </div>\n\n <div class=\"mb-6\">\n <label\n class=\"block text-sm font-medium text-slate-700 dark:text-slate-200 mb-2\"\n >\n System Prompt\n </label>\n <textarea\n v-model=\"systemPrompt\"\n rows=\"6\"\n class=\"w-full text-sm rounded-md border-gray-300 dark:border-slate-700 dark:bg-slate-900 focus:border-woot-500 focus:ring-woot-500\"\n placeholder=\"You are a helpful SDR agent...\"\n />\n <p class=\"mt-1 text-xs text-slate-500\">{{$t(`\n Define the persona and behavioral rules for the agent.\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":110,"column":69,"nodeType":"VText","messageId":"unexpected","endLine":112,"endColumn":7},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Update Configuration\n ' is used","line":110,"column":69,"nodeType":null,"endLine":112,"endColumn":7,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3104],"text":"<i18n>\n{\n \"en\": {\n \"\\n Update Configuration\\n \": \"\\n Update Configuration\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">\n Jasmine AI Configuration\n </h2>\n <p class=\"text-sm text-slate-600 dark:text-slate-400\">\n Configure the AI agent for this inbox.\n </p>\n </div>\n\n <div class=\"mb-6\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n v-model=\"isEnabled\"\n type=\"checkbox\"\n class=\"form-checkbox h-5 w-5 text-woot-500 rounded border-gray-300 focus:ring-woot-500\"\n />\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\">\n Enable Jasmine AI Agent\n </span>\n </label>\n </div>\n\n <div class=\"mb-6\">\n <label\n class=\"block text-sm font-medium text-slate-700 dark:text-slate-200 mb-2\"\n >\n System Prompt\n </label>\n <textarea\n v-model=\"systemPrompt\"\n rows=\"6\"\n class=\"w-full text-sm rounded-md border-gray-300 dark:border-slate-700 dark:bg-slate-900 focus:border-woot-500 focus:ring-woot-500\"\n placeholder=\"You are a helpful SDR agent...\"\n />\n <p class=\"mt-1 text-xs text-slate-500\">\n Define the persona and behavioral rules for the agent.\n </p>\n </div>\n\n <woot-button :is-loading=\"isUpdating\" @click=\"updateSettings\">{{$t(`\n Update Configuration\n `)}}"}}]}],"suppressedMessages":[],"errorCount":6,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\nimport JasmineKnowledgeBase from './components/JasmineKnowledgeBase.vue';\n\nexport default {\n components: {\n JasmineKnowledgeBase,\n },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n showKnowledgeBase: {\n type: Boolean,\n default: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n isEnabled: false,\n systemPrompt: '',\n isUpdating: false,\n };\n },\n mounted() {\n this.fetchSettings();\n },\n methods: {\n async fetchSettings() {\n try {\n const { data } = await JasmineAPI.getSettings(this.inbox.id);\n this.isEnabled = data.is_enabled;\n this.systemPrompt = data.system_prompt || '';\n } catch (error) {\n // Assume 404 means no config yet, defaults are fine\n }\n },\n async updateSettings() {\n this.isUpdating = true;\n try {\n await JasmineAPI.updateSettings(this.inbox.id, {\n inbox_config: {\n is_enabled: this.isEnabled,\n system_prompt: this.systemPrompt,\n },\n });\n useAlert(this.$t('INBOX_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n } catch (error) {\n useAlert(error.message || this.$t('INBOX_MGMT.EDIT.API.ERROR_MESSAGE'));\n } finally {\n this.isUpdating = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <div :class=\"{ 'mx-8': !isTab }\">\n <div class=\"settings-section\">\n <div class=\"flex flex-col gap-1 items-start mb-4\">\n <h2 class=\"text-xl font-medium text-slate-900 dark:text-slate-100\">\n Jasmine AI Configuration\n </h2>\n <p class=\"text-sm text-slate-600 dark:text-slate-400\">\n Configure the AI agent for this inbox.\n </p>\n </div>\n\n <div class=\"mb-6\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n v-model=\"isEnabled\"\n type=\"checkbox\"\n class=\"form-checkbox h-5 w-5 text-woot-500 rounded border-gray-300 focus:ring-woot-500\"\n />\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\">\n Enable Jasmine AI Agent\n </span>\n </label>\n </div>\n\n <div class=\"mb-6\">\n <label\n class=\"block text-sm font-medium text-slate-700 dark:text-slate-200 mb-2\"\n >\n System Prompt\n </label>\n <textarea\n v-model=\"systemPrompt\"\n rows=\"6\"\n class=\"w-full text-sm rounded-md border-gray-300 dark:border-slate-700 dark:bg-slate-900 focus:border-woot-500 focus:ring-woot-500\"\n placeholder=\"You are a helpful SDR agent...\"\n />\n <p class=\"mt-1 text-xs text-slate-500\">\n Define the persona and behavioral rules for the agent.\n </p>\n </div>\n\n <woot-button :is-loading=\"isUpdating\" @click=\"updateSettings\">\n Update Configuration\n </woot-button>\n\n <JasmineKnowledgeBase v-if=\"showKnowledgeBase\" :inbox-id=\"inbox.id\" />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/PreChatForm/PreChatFields.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/PreChatForm/Settings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/SmtpSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/WidgetBuilder.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/360DialogWhatsapp.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Api.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/BaileysWhatsapp.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/BandwidthSms.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/CloudWhatsapp.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Email.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Facebook.vue","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":133,"column":13,"nodeType":"MemberExpression","messageId":"unexpected","endLine":133,"endColumn":26,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[3682,3729],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":144,"column":13,"nodeType":"MemberExpression","messageId":"unexpected","endLine":144,"endColumn":26,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[4160,4207],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Instagram.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Line.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Sms.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Telegram.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Tiktok.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Twilio.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.ADD.TWILIO.${authTokeni18nKey}.LABEL`' dynamic key is used'","line":228,"column":12,"nodeType":"CallExpression","endLine":228,"endColumn":65},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.ADD.TWILIO.${authTokeni18nKey}.PLACEHOLDER`' dynamic key is used'","line":233,"column":13,"nodeType":"CallExpression","endLine":233,"endColumn":72},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.ADD.TWILIO.${authTokeni18nKey}.ERROR`' dynamic key is used'","line":238,"column":14,"nodeType":"CallExpression","endLine":238,"endColumn":67}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<!-- Deprecated in favour of separate files for SMS and Whatsapp and also to implement new providers for each platform in the future-->\n<script>\nimport { mapGetters } from 'vuex';\nimport { useVuelidate } from '@vuelidate/core';\nimport { useAlert } from 'dashboard/composables';\nimport { required } from '@vuelidate/validators';\nimport router from '../../../../index';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\nimport { isPhoneE164OrEmpty } from 'shared/helpers/Validators';\nimport { parseAPIErrorResponse } from 'dashboard/store/utils/api';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n type: {\n type: String,\n required: true,\n },\n },\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n accountSID: '',\n apiKeySID: '',\n authToken: '',\n medium: this.type,\n channelName: '',\n messagingServiceSID: '',\n useMessagingService: false,\n useAPIKey: false,\n phoneNumber: '',\n };\n },\n computed: {\n ...mapGetters({\n uiFlags: 'inboxes/getUIFlags',\n }),\n authTokeni18nKey() {\n return this.useAPIKey ? 'API_KEY_SECRET' : 'AUTH_TOKEN';\n },\n },\n validations() {\n let validations = {\n channelName: { required },\n\n authToken: { required },\n accountSID: { required },\n medium: { required },\n };\n if (this.phoneNumber) {\n validations = {\n ...validations,\n phoneNumber: { required, isPhoneE164OrEmpty },\n messagingServiceSID: {},\n };\n } else {\n validations = {\n ...validations,\n messagingServiceSID: { required },\n phoneNumber: {},\n };\n }\n\n if (this.useAPIKey) {\n validations = {\n ...validations,\n apiKeySID: { required },\n };\n }\n return validations;\n },\n methods: {\n async createChannel() {\n this.v$.$touch();\n if (this.v$.$invalid) {\n return;\n }\n\n try {\n const twilioChannel = await this.$store.dispatch(\n 'inboxes/createTwilioChannel',\n {\n twilio_channel: {\n name: this.channelName?.trim(),\n medium: this.medium,\n account_sid: this.accountSID,\n api_key_sid: this.apiKeySID,\n auth_token: this.authToken,\n messaging_service_sid: this.messagingServiceSID,\n phone_number: this.messagingServiceSID\n ? null\n : `+${this.phoneNumber.replace(/\\D/g, '')}`,\n },\n }\n );\n\n router.replace({\n name: 'settings_inboxes_add_agents',\n params: {\n page: 'new',\n inbox_id: twilioChannel.id,\n },\n });\n } catch (error) {\n const errorMessage =\n parseAPIErrorResponse(error) ||\n this.$t('INBOX_MGMT.ADD.TWILIO.API.ERROR_MESSAGE');\n useAlert(errorMessage);\n }\n },\n },\n};\n</script>\n\n<template>\n <form class=\"flex flex-wrap flex-col mx-0\" @submit.prevent=\"createChannel()\">\n <div class=\"flex-shrink-0 flex-grow-0\">\n <label :class=\"{ error: v$.channelName.$error }\">\n {{ $t('INBOX_MGMT.ADD.TWILIO.CHANNEL_NAME.LABEL') }}\n <input\n v-model=\"channelName\"\n type=\"text\"\n :placeholder=\"$t('INBOX_MGMT.ADD.TWILIO.CHANNEL_NAME.PLACEHOLDER')\"\n @blur=\"v$.channelName.$touch\"\n />\n <span v-if=\"v$.channelName.$error\" class=\"message\">{{\n $t('INBOX_MGMT.ADD.TWILIO.CHANNEL_NAME.ERROR')\n }}</span>\n </label>\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-0\">\n <label\n v-if=\"useMessagingService\"\n :class=\"{ error: v$.messagingServiceSID.$error }\"\n >\n {{ $t('INBOX_MGMT.ADD.TWILIO.MESSAGING_SERVICE_SID.LABEL') }}\n <input\n v-model=\"messagingServiceSID\"\n type=\"text\"\n :placeholder=\"\n $t('INBOX_MGMT.ADD.TWILIO.MESSAGING_SERVICE_SID.PLACEHOLDER')\n \"\n @blur=\"v$.messagingServiceSID.$touch\"\n />\n <span v-if=\"v$.messagingServiceSID.$error\" class=\"message\">{{\n $t('INBOX_MGMT.ADD.TWILIO.MESSAGING_SERVICE_SID.ERROR')\n }}</span>\n </label>\n </div>\n\n <div v-if=\"!useMessagingService\" class=\"flex-shrink-0 flex-grow-0\">\n <label :class=\"{ error: v$.phoneNumber.$error }\">\n {{ $t('INBOX_MGMT.ADD.TWILIO.PHONE_NUMBER.LABEL') }}\n <input\n v-model=\"phoneNumber\"\n type=\"text\"\n :placeholder=\"$t('INBOX_MGMT.ADD.TWILIO.PHONE_NUMBER.PLACEHOLDER')\"\n @blur=\"v$.phoneNumber.$touch\"\n />\n <span v-if=\"v$.phoneNumber.$error\" class=\"message\">{{\n $t('INBOX_MGMT.ADD.TWILIO.PHONE_NUMBER.ERROR')\n }}</span>\n </label>\n </div>\n\n <div class=\"max-w-[65%] w-full messagingServiceHelptext\">\n <label for=\"useMessagingService\">\n <input\n id=\"useMessagingService\"\n v-model=\"useMessagingService\"\n type=\"checkbox\"\n class=\"checkbox\"\n />\n {{\n $t(\n 'INBOX_MGMT.ADD.TWILIO.MESSAGING_SERVICE_SID.USE_MESSAGING_SERVICE'\n )\n }}\n </label>\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-0\">\n <label :class=\"{ error: v$.accountSID.$error }\">\n {{ $t('INBOX_MGMT.ADD.TWILIO.ACCOUNT_SID.LABEL') }}\n <input\n v-model=\"accountSID\"\n type=\"text\"\n :placeholder=\"$t('INBOX_MGMT.ADD.TWILIO.ACCOUNT_SID.PLACEHOLDER')\"\n @blur=\"v$.accountSID.$touch\"\n />\n <span v-if=\"v$.accountSID.$error\" class=\"message\">{{\n $t('INBOX_MGMT.ADD.TWILIO.ACCOUNT_SID.ERROR')\n }}</span>\n </label>\n </div>\n <div class=\"max-w-[65%] w-full messagingServiceHelptext\">\n <label for=\"useAPIKey\">\n <input\n id=\"useAPIKey\"\n v-model=\"useAPIKey\"\n type=\"checkbox\"\n class=\"checkbox\"\n />\n {{ $t('INBOX_MGMT.ADD.TWILIO.API_KEY.USE_API_KEY') }}\n </label>\n </div>\n <div v-if=\"useAPIKey\" class=\"flex-shrink-0 flex-grow-0\">\n <label :class=\"{ error: v$.apiKeySID.$error }\">\n {{ $t('INBOX_MGMT.ADD.TWILIO.API_KEY.LABEL') }}\n <input\n v-model=\"apiKeySID\"\n type=\"text\"\n :placeholder=\"$t('INBOX_MGMT.ADD.TWILIO.API_KEY.PLACEHOLDER')\"\n @blur=\"v$.apiKeySID.$touch\"\n />\n <span v-if=\"v$.apiKeySID.$error\" class=\"message\">{{\n $t('INBOX_MGMT.ADD.TWILIO.API_KEY.ERROR')\n }}</span>\n </label>\n </div>\n <div class=\"flex-shrink-0 flex-grow-0\">\n <label :class=\"{ error: v$.authToken.$error }\">\n {{ $t(`INBOX_MGMT.ADD.TWILIO.${authTokeni18nKey}.LABEL`) }}\n <input\n v-model=\"authToken\"\n type=\"text\"\n :placeholder=\"\n $t(`INBOX_MGMT.ADD.TWILIO.${authTokeni18nKey}.PLACEHOLDER`)\n \"\n @blur=\"v$.authToken.$touch\"\n />\n <span v-if=\"v$.authToken.$error\" class=\"message\">\n {{ $t(`INBOX_MGMT.ADD.TWILIO.${authTokeni18nKey}.ERROR`) }}\n </span>\n </label>\n </div>\n\n <div class=\"w-full mt-4\">\n <NextButton\n :is-loading=\"uiFlags.isCreating\"\n type=\"submit\"\n solid\n blue\n :label=\"$t('INBOX_MGMT.ADD.TWILIO.SUBMIT_BUTTON')\"\n />\n </div>\n </form>\n</template>\n\n<style lang=\"scss\" scoped>\n.messagingServiceHelptext {\n margin-top: -10px;\n margin-bottom: 15px;\n\n .checkbox {\n margin: 0px 4px;\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Twitter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Voice.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Website.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Whatsapp.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/WhatsappEmbeddedSignup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Wuzapi.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/ZapiWhatsapp.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/emailChannels/EmailInboxFinish.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/emailChannels/ForwardToOption.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/emailChannels/Google.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/emailChannels/Microsoft.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/emailChannels/OAuthChannel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/google/Reauthorize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/instagram/DuplicateInboxBanner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/instagram/Reauthorize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/microsoft/Reauthorize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/tiktok/Reauthorize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/whatsapp/Reauthorize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/whatsapp/utils.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/wuzapi/WuzapiConfiguration.vue","messages":[{"ruleId":"no-use-before-define","severity":2,"message":"'stopPolling' was used before it was defined.","line":61,"column":11,"nodeType":"Identifier","messageId":"usedBeforeDefined","endLine":61,"endColumn":22},{"ruleId":"no-use-before-define","severity":2,"message":"'startPolling' was used before it was defined.","line":85,"column":11,"nodeType":"Identifier","messageId":"usedBeforeDefined","endLine":85,"endColumn":23},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' -\n ' is used","line":216,"column":61,"nodeType":null,"endLine":217,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6335],"text":"<i18n>\n{\n \"en\": {\n \" -\\n \": \" -\\n \"\n }\n}\n</i18n>\n\n<script>\n// Use global axios (window.axios) which has interceptors for auth headers\nimport { defineComponent, ref, onMounted, onUnmounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default defineComponent({\n components: { NextButton },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const store = useStore();\n const isLoading = ref(false);\n const isConnected = ref(false);\n const qrCode = ref('');\n const statusMessage = ref('');\n let pollInterval = null;\n\n // Get accountId reliably from global store (preferred) or inbox prop\n const accountId = computed(() => {\n return store.getters.getCurrentAccountId || props.inbox.account_id;\n });\n\n // Helper for API URL\n const getApiUrl = endpoint => {\n if (!accountId.value) throw new Error('Account ID missing');\n return `/api/v1/accounts/${accountId.value}/inboxes/${props.inbox.id}/wuzapi${endpoint}`;\n };\n\n const fetchStatus = async () => {\n if (!accountId.value) return;\n\n try {\n const response = await window.axios.get(getApiUrl(''));\n\n const data = response.data;\n // Wuzapi format: { data: { connected: true, jid: \"...\", details: \"...\" } }\n const wuzapiData = data.data || {};\n\n const isWuzapiConnected =\n wuzapiData.connected === true && !!wuzapiData.jid;\n\n // Also keep legacy check just in case payload differs\n const legacyStatus = data.status || data.state;\n const isLegacyConnected = ['CONNECTED', 'inChat', 'success'].includes(\n legacyStatus\n );\n\n isConnected.value = isWuzapiConnected || isLegacyConnected;\n statusMessage.value = wuzapiData.details || legacyStatus || 'Unknown';\n\n if (isConnected.value) {\n qrCode.value = '';\n stopPolling();\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || error.message || 'Check failed';\n }\n };\n\n const fetchQrCode = async () => {\n try {\n const response = await window.axios.get(getApiUrl('/qr'));\n\n // Backend now normalizes to 'qrcode' in most cases, but we keep robust checks\n const d = response.data;\n const qrcodeData =\n d.qrcode ||\n d.qr ||\n d.QRCode ||\n d.data?.qrcode ||\n d.data?.qr ||\n (typeof d.data === 'string' ? d.data : null);\n\n if (qrcodeData && qrcodeData.length > 20) {\n qrCode.value = qrcodeData;\n startPolling();\n } else {\n // Fallback: maybe we are already connected?\n await fetchStatus();\n if (!isConnected.value) {\n statusMessage.value = 'QR Code not received and not connected.';\n }\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || 'Failed to load QR';\n }\n };\n\n const handleConnect = async () => {\n if (!accountId.value) {\n useAlert('Error: Account ID missing');\n return;\n }\n\n isLoading.value = true;\n try {\n // 1. Call Connect\n const connectUrl = getApiUrl('/connect');\n await window.axios.post(connectUrl);\n // 2. Fetch QR\n await fetchQrCode();\n } catch (error) {\n useAlert(error.response?.data?.error || 'Connection failed');\n } finally {\n isLoading.value = false;\n }\n };\n\n const disconnect = async () => {\n isLoading.value = true;\n try {\n await window.axios.post(getApiUrl('/disconnect'));\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_SUCCESS'));\n isConnected.value = false;\n qrCode.value = '';\n fetchStatus();\n } catch (error) {\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_ERROR'));\n } finally {\n isLoading.value = false;\n }\n };\n\n // Function hoisting allows use before definition\n function stopPolling() {\n if (pollInterval) {\n clearInterval(pollInterval);\n pollInterval = null;\n }\n }\n\n function startPolling() {\n if (pollInterval) return;\n // Poll every 5 seconds to check status AND refresh QR code\n pollInterval = setInterval(async () => {\n await fetchStatus();\n // If still not connected (and polling hasn't been stopped by fetchStatus), refresh QR\n if (pollInterval && !isConnected.value) {\n await fetchQrCode();\n }\n }, 5000);\n }\n\n const isLoadingWebhook = ref(false);\n const webhookInfo = ref(null);\n\n const fetchWebhookInfo = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.get(getApiUrl('/webhook_info'));\n webhookInfo.value = response.data;\n useAlert('Webhook info fetched successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to fetch webhook info');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n const updateWebhook = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.put(getApiUrl('/update_webhook'));\n webhookInfo.value = {\n message: response.data.message,\n url: response.data.webhook_url,\n };\n useAlert('Webhook updated successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to update webhook');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n onMounted(() => {\n fetchStatus();\n });\n\n onUnmounted(() => {\n stopPolling();\n });\n\n return {\n isLoading,\n isConnected,\n qrCode,\n statusMessage,\n fetchStatus,\n disconnect,\n handleConnect,\n accountId,\n isLoadingWebhook,\n webhookInfo,\n fetchWebhookInfo,\n updateWebhook,\n };\n },\n});\n</script>\n\n<template>\n <div class=\"mx-8 mt-6\">\n <div class=\"bg-white p-6 rounded-lg border border-n-weak\">\n <h3 class=\"text-lg font-medium text-n-slate-12 mb-4\">\n {{ $t('INBOX_MGMT.ADD.WHATSAPP.PROVIDERS.WUZAPI') }}{{$t(` -\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":266,"column":53,"nodeType":"VText","messageId":"unexpected","endLine":267,"endColumn":21},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Status: ' is used","line":266,"column":53,"nodeType":null,"endLine":267,"endColumn":21,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,8087],"text":"<i18n>\n{\n \"en\": {\n \"\\n Status: \": \"\\n Status: \"\n }\n}\n</i18n>\n\n<script>\n// Use global axios (window.axios) which has interceptors for auth headers\nimport { defineComponent, ref, onMounted, onUnmounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default defineComponent({\n components: { NextButton },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const store = useStore();\n const isLoading = ref(false);\n const isConnected = ref(false);\n const qrCode = ref('');\n const statusMessage = ref('');\n let pollInterval = null;\n\n // Get accountId reliably from global store (preferred) or inbox prop\n const accountId = computed(() => {\n return store.getters.getCurrentAccountId || props.inbox.account_id;\n });\n\n // Helper for API URL\n const getApiUrl = endpoint => {\n if (!accountId.value) throw new Error('Account ID missing');\n return `/api/v1/accounts/${accountId.value}/inboxes/${props.inbox.id}/wuzapi${endpoint}`;\n };\n\n const fetchStatus = async () => {\n if (!accountId.value) return;\n\n try {\n const response = await window.axios.get(getApiUrl(''));\n\n const data = response.data;\n // Wuzapi format: { data: { connected: true, jid: \"...\", details: \"...\" } }\n const wuzapiData = data.data || {};\n\n const isWuzapiConnected =\n wuzapiData.connected === true && !!wuzapiData.jid;\n\n // Also keep legacy check just in case payload differs\n const legacyStatus = data.status || data.state;\n const isLegacyConnected = ['CONNECTED', 'inChat', 'success'].includes(\n legacyStatus\n );\n\n isConnected.value = isWuzapiConnected || isLegacyConnected;\n statusMessage.value = wuzapiData.details || legacyStatus || 'Unknown';\n\n if (isConnected.value) {\n qrCode.value = '';\n stopPolling();\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || error.message || 'Check failed';\n }\n };\n\n const fetchQrCode = async () => {\n try {\n const response = await window.axios.get(getApiUrl('/qr'));\n\n // Backend now normalizes to 'qrcode' in most cases, but we keep robust checks\n const d = response.data;\n const qrcodeData =\n d.qrcode ||\n d.qr ||\n d.QRCode ||\n d.data?.qrcode ||\n d.data?.qr ||\n (typeof d.data === 'string' ? d.data : null);\n\n if (qrcodeData && qrcodeData.length > 20) {\n qrCode.value = qrcodeData;\n startPolling();\n } else {\n // Fallback: maybe we are already connected?\n await fetchStatus();\n if (!isConnected.value) {\n statusMessage.value = 'QR Code not received and not connected.';\n }\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || 'Failed to load QR';\n }\n };\n\n const handleConnect = async () => {\n if (!accountId.value) {\n useAlert('Error: Account ID missing');\n return;\n }\n\n isLoading.value = true;\n try {\n // 1. Call Connect\n const connectUrl = getApiUrl('/connect');\n await window.axios.post(connectUrl);\n // 2. Fetch QR\n await fetchQrCode();\n } catch (error) {\n useAlert(error.response?.data?.error || 'Connection failed');\n } finally {\n isLoading.value = false;\n }\n };\n\n const disconnect = async () => {\n isLoading.value = true;\n try {\n await window.axios.post(getApiUrl('/disconnect'));\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_SUCCESS'));\n isConnected.value = false;\n qrCode.value = '';\n fetchStatus();\n } catch (error) {\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_ERROR'));\n } finally {\n isLoading.value = false;\n }\n };\n\n // Function hoisting allows use before definition\n function stopPolling() {\n if (pollInterval) {\n clearInterval(pollInterval);\n pollInterval = null;\n }\n }\n\n function startPolling() {\n if (pollInterval) return;\n // Poll every 5 seconds to check status AND refresh QR code\n pollInterval = setInterval(async () => {\n await fetchStatus();\n // If still not connected (and polling hasn't been stopped by fetchStatus), refresh QR\n if (pollInterval && !isConnected.value) {\n await fetchQrCode();\n }\n }, 5000);\n }\n\n const isLoadingWebhook = ref(false);\n const webhookInfo = ref(null);\n\n const fetchWebhookInfo = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.get(getApiUrl('/webhook_info'));\n webhookInfo.value = response.data;\n useAlert('Webhook info fetched successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to fetch webhook info');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n const updateWebhook = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.put(getApiUrl('/update_webhook'));\n webhookInfo.value = {\n message: response.data.message,\n url: response.data.webhook_url,\n };\n useAlert('Webhook updated successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to update webhook');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n onMounted(() => {\n fetchStatus();\n });\n\n onUnmounted(() => {\n stopPolling();\n });\n\n return {\n isLoading,\n isConnected,\n qrCode,\n statusMessage,\n fetchStatus,\n disconnect,\n handleConnect,\n accountId,\n isLoadingWebhook,\n webhookInfo,\n fetchWebhookInfo,\n updateWebhook,\n };\n },\n});\n</script>\n\n<template>\n <div class=\"mx-8 mt-6\">\n <div class=\"bg-white p-6 rounded-lg border border-n-weak\">\n <h3 class=\"text-lg font-medium text-n-slate-12 mb-4\">\n {{ $t('INBOX_MGMT.ADD.WHATSAPP.PROVIDERS.WUZAPI') }} -\n {{ $t('INBOX_MGMT.SETTINGS_POPUP.MESSENGER_CONFIG') }}\n </h3>\n\n <div v-if=\"accountId\" class=\"flex flex-col items-center\">\n <div v-if=\"isConnected\" class=\"flex flex-col items-center\">\n <div class=\"text-green-600 font-bold mb-4 flex items-center gap-2\">\n <span class=\"i-woot-checkmark-circle text-2xl\" />\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED') }}\n </div>\n <p class=\"text-n-slate-11 mb-4\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED_DESC') }}\n </p>\n <NextButton\n color=\"ruby\"\n :is-loading=\"isLoading\"\n :label=\"$t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT')\"\n @click=\"disconnect\"\n />\n </div>\n\n <div v-else class=\"flex flex-col items-center\">\n <div v-if=\"qrCode\" class=\"mb-4\">\n <img\n :src=\"qrCode\"\n alt=\"Whatsapp QR Code\"\n class=\"w-64 h-64 border rounded\"\n />\n <p class=\"text-center text-sm text-n-slate-11 mt-2\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.SCAN_QR') }}\n </p>\n </div>\n\n <div v-else class=\"flex flex-col items-center mb-4\">\n <p class=\"text-n-slate-11 mb-4\">\n {{\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT_DESC') ||\n 'Click to initiate connection'\n }}\n </p>\n <NextButton\n color=\"blue\"\n :is-loading=\"isLoading\"\n :label=\"\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT') || 'Connect WhatsApp'\n \"\n @click=\"handleConnect\"\n />\n </div>\n\n <div class=\"mt-4 text-xs text-n-slate-10\">{{$t(`\n Status: `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":272,"column":44,"nodeType":"VText","messageId":"unexpected","endLine":274,"endColumn":7},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Error: Account ID not loaded. Please refresh the page.\n ' is used","line":272,"column":44,"nodeType":null,"endLine":274,"endColumn":7,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,8266],"text":"<i18n>\n{\n \"en\": {\n \"\\n Error: Account ID not loaded. Please refresh the page.\\n \": \"\\n Error: Account ID not loaded. Please refresh the page.\\n \"\n }\n}\n</i18n>\n\n<script>\n// Use global axios (window.axios) which has interceptors for auth headers\nimport { defineComponent, ref, onMounted, onUnmounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default defineComponent({\n components: { NextButton },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const store = useStore();\n const isLoading = ref(false);\n const isConnected = ref(false);\n const qrCode = ref('');\n const statusMessage = ref('');\n let pollInterval = null;\n\n // Get accountId reliably from global store (preferred) or inbox prop\n const accountId = computed(() => {\n return store.getters.getCurrentAccountId || props.inbox.account_id;\n });\n\n // Helper for API URL\n const getApiUrl = endpoint => {\n if (!accountId.value) throw new Error('Account ID missing');\n return `/api/v1/accounts/${accountId.value}/inboxes/${props.inbox.id}/wuzapi${endpoint}`;\n };\n\n const fetchStatus = async () => {\n if (!accountId.value) return;\n\n try {\n const response = await window.axios.get(getApiUrl(''));\n\n const data = response.data;\n // Wuzapi format: { data: { connected: true, jid: \"...\", details: \"...\" } }\n const wuzapiData = data.data || {};\n\n const isWuzapiConnected =\n wuzapiData.connected === true && !!wuzapiData.jid;\n\n // Also keep legacy check just in case payload differs\n const legacyStatus = data.status || data.state;\n const isLegacyConnected = ['CONNECTED', 'inChat', 'success'].includes(\n legacyStatus\n );\n\n isConnected.value = isWuzapiConnected || isLegacyConnected;\n statusMessage.value = wuzapiData.details || legacyStatus || 'Unknown';\n\n if (isConnected.value) {\n qrCode.value = '';\n stopPolling();\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || error.message || 'Check failed';\n }\n };\n\n const fetchQrCode = async () => {\n try {\n const response = await window.axios.get(getApiUrl('/qr'));\n\n // Backend now normalizes to 'qrcode' in most cases, but we keep robust checks\n const d = response.data;\n const qrcodeData =\n d.qrcode ||\n d.qr ||\n d.QRCode ||\n d.data?.qrcode ||\n d.data?.qr ||\n (typeof d.data === 'string' ? d.data : null);\n\n if (qrcodeData && qrcodeData.length > 20) {\n qrCode.value = qrcodeData;\n startPolling();\n } else {\n // Fallback: maybe we are already connected?\n await fetchStatus();\n if (!isConnected.value) {\n statusMessage.value = 'QR Code not received and not connected.';\n }\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || 'Failed to load QR';\n }\n };\n\n const handleConnect = async () => {\n if (!accountId.value) {\n useAlert('Error: Account ID missing');\n return;\n }\n\n isLoading.value = true;\n try {\n // 1. Call Connect\n const connectUrl = getApiUrl('/connect');\n await window.axios.post(connectUrl);\n // 2. Fetch QR\n await fetchQrCode();\n } catch (error) {\n useAlert(error.response?.data?.error || 'Connection failed');\n } finally {\n isLoading.value = false;\n }\n };\n\n const disconnect = async () => {\n isLoading.value = true;\n try {\n await window.axios.post(getApiUrl('/disconnect'));\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_SUCCESS'));\n isConnected.value = false;\n qrCode.value = '';\n fetchStatus();\n } catch (error) {\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_ERROR'));\n } finally {\n isLoading.value = false;\n }\n };\n\n // Function hoisting allows use before definition\n function stopPolling() {\n if (pollInterval) {\n clearInterval(pollInterval);\n pollInterval = null;\n }\n }\n\n function startPolling() {\n if (pollInterval) return;\n // Poll every 5 seconds to check status AND refresh QR code\n pollInterval = setInterval(async () => {\n await fetchStatus();\n // If still not connected (and polling hasn't been stopped by fetchStatus), refresh QR\n if (pollInterval && !isConnected.value) {\n await fetchQrCode();\n }\n }, 5000);\n }\n\n const isLoadingWebhook = ref(false);\n const webhookInfo = ref(null);\n\n const fetchWebhookInfo = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.get(getApiUrl('/webhook_info'));\n webhookInfo.value = response.data;\n useAlert('Webhook info fetched successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to fetch webhook info');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n const updateWebhook = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.put(getApiUrl('/update_webhook'));\n webhookInfo.value = {\n message: response.data.message,\n url: response.data.webhook_url,\n };\n useAlert('Webhook updated successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to update webhook');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n onMounted(() => {\n fetchStatus();\n });\n\n onUnmounted(() => {\n stopPolling();\n });\n\n return {\n isLoading,\n isConnected,\n qrCode,\n statusMessage,\n fetchStatus,\n disconnect,\n handleConnect,\n accountId,\n isLoadingWebhook,\n webhookInfo,\n fetchWebhookInfo,\n updateWebhook,\n };\n },\n});\n</script>\n\n<template>\n <div class=\"mx-8 mt-6\">\n <div class=\"bg-white p-6 rounded-lg border border-n-weak\">\n <h3 class=\"text-lg font-medium text-n-slate-12 mb-4\">\n {{ $t('INBOX_MGMT.ADD.WHATSAPP.PROVIDERS.WUZAPI') }} -\n {{ $t('INBOX_MGMT.SETTINGS_POPUP.MESSENGER_CONFIG') }}\n </h3>\n\n <div v-if=\"accountId\" class=\"flex flex-col items-center\">\n <div v-if=\"isConnected\" class=\"flex flex-col items-center\">\n <div class=\"text-green-600 font-bold mb-4 flex items-center gap-2\">\n <span class=\"i-woot-checkmark-circle text-2xl\" />\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED') }}\n </div>\n <p class=\"text-n-slate-11 mb-4\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED_DESC') }}\n </p>\n <NextButton\n color=\"ruby\"\n :is-loading=\"isLoading\"\n :label=\"$t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT')\"\n @click=\"disconnect\"\n />\n </div>\n\n <div v-else class=\"flex flex-col items-center\">\n <div v-if=\"qrCode\" class=\"mb-4\">\n <img\n :src=\"qrCode\"\n alt=\"Whatsapp QR Code\"\n class=\"w-64 h-64 border rounded\"\n />\n <p class=\"text-center text-sm text-n-slate-11 mt-2\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.SCAN_QR') }}\n </p>\n </div>\n\n <div v-else class=\"flex flex-col items-center mb-4\">\n <p class=\"text-n-slate-11 mb-4\">\n {{\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT_DESC') ||\n 'Click to initiate connection'\n }}\n </p>\n <NextButton\n color=\"blue\"\n :is-loading=\"isLoading\"\n :label=\"\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT') || 'Connect WhatsApp'\n \"\n @click=\"handleConnect\"\n />\n </div>\n\n <div class=\"mt-4 text-xs text-n-slate-10\">\n Status: {{ statusMessage }}\n </div>\n </div>\n </div>\n\n <div v-else class=\"text-red-600 p-4\">{{$t(`\n Error: Account ID not loaded. Please refresh the page.\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":276,"column":62,"nodeType":"VText","messageId":"unexpected","endLine":278,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Webhook Configuration\n ' is used","line":276,"column":62,"nodeType":null,"endLine":278,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,8435],"text":"<i18n>\n{\n \"en\": {\n \"\\n Webhook Configuration\\n \": \"\\n Webhook Configuration\\n \"\n }\n}\n</i18n>\n\n<script>\n// Use global axios (window.axios) which has interceptors for auth headers\nimport { defineComponent, ref, onMounted, onUnmounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default defineComponent({\n components: { NextButton },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const store = useStore();\n const isLoading = ref(false);\n const isConnected = ref(false);\n const qrCode = ref('');\n const statusMessage = ref('');\n let pollInterval = null;\n\n // Get accountId reliably from global store (preferred) or inbox prop\n const accountId = computed(() => {\n return store.getters.getCurrentAccountId || props.inbox.account_id;\n });\n\n // Helper for API URL\n const getApiUrl = endpoint => {\n if (!accountId.value) throw new Error('Account ID missing');\n return `/api/v1/accounts/${accountId.value}/inboxes/${props.inbox.id}/wuzapi${endpoint}`;\n };\n\n const fetchStatus = async () => {\n if (!accountId.value) return;\n\n try {\n const response = await window.axios.get(getApiUrl(''));\n\n const data = response.data;\n // Wuzapi format: { data: { connected: true, jid: \"...\", details: \"...\" } }\n const wuzapiData = data.data || {};\n\n const isWuzapiConnected =\n wuzapiData.connected === true && !!wuzapiData.jid;\n\n // Also keep legacy check just in case payload differs\n const legacyStatus = data.status || data.state;\n const isLegacyConnected = ['CONNECTED', 'inChat', 'success'].includes(\n legacyStatus\n );\n\n isConnected.value = isWuzapiConnected || isLegacyConnected;\n statusMessage.value = wuzapiData.details || legacyStatus || 'Unknown';\n\n if (isConnected.value) {\n qrCode.value = '';\n stopPolling();\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || error.message || 'Check failed';\n }\n };\n\n const fetchQrCode = async () => {\n try {\n const response = await window.axios.get(getApiUrl('/qr'));\n\n // Backend now normalizes to 'qrcode' in most cases, but we keep robust checks\n const d = response.data;\n const qrcodeData =\n d.qrcode ||\n d.qr ||\n d.QRCode ||\n d.data?.qrcode ||\n d.data?.qr ||\n (typeof d.data === 'string' ? d.data : null);\n\n if (qrcodeData && qrcodeData.length > 20) {\n qrCode.value = qrcodeData;\n startPolling();\n } else {\n // Fallback: maybe we are already connected?\n await fetchStatus();\n if (!isConnected.value) {\n statusMessage.value = 'QR Code not received and not connected.';\n }\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || 'Failed to load QR';\n }\n };\n\n const handleConnect = async () => {\n if (!accountId.value) {\n useAlert('Error: Account ID missing');\n return;\n }\n\n isLoading.value = true;\n try {\n // 1. Call Connect\n const connectUrl = getApiUrl('/connect');\n await window.axios.post(connectUrl);\n // 2. Fetch QR\n await fetchQrCode();\n } catch (error) {\n useAlert(error.response?.data?.error || 'Connection failed');\n } finally {\n isLoading.value = false;\n }\n };\n\n const disconnect = async () => {\n isLoading.value = true;\n try {\n await window.axios.post(getApiUrl('/disconnect'));\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_SUCCESS'));\n isConnected.value = false;\n qrCode.value = '';\n fetchStatus();\n } catch (error) {\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_ERROR'));\n } finally {\n isLoading.value = false;\n }\n };\n\n // Function hoisting allows use before definition\n function stopPolling() {\n if (pollInterval) {\n clearInterval(pollInterval);\n pollInterval = null;\n }\n }\n\n function startPolling() {\n if (pollInterval) return;\n // Poll every 5 seconds to check status AND refresh QR code\n pollInterval = setInterval(async () => {\n await fetchStatus();\n // If still not connected (and polling hasn't been stopped by fetchStatus), refresh QR\n if (pollInterval && !isConnected.value) {\n await fetchQrCode();\n }\n }, 5000);\n }\n\n const isLoadingWebhook = ref(false);\n const webhookInfo = ref(null);\n\n const fetchWebhookInfo = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.get(getApiUrl('/webhook_info'));\n webhookInfo.value = response.data;\n useAlert('Webhook info fetched successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to fetch webhook info');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n const updateWebhook = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.put(getApiUrl('/update_webhook'));\n webhookInfo.value = {\n message: response.data.message,\n url: response.data.webhook_url,\n };\n useAlert('Webhook updated successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to update webhook');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n onMounted(() => {\n fetchStatus();\n });\n\n onUnmounted(() => {\n stopPolling();\n });\n\n return {\n isLoading,\n isConnected,\n qrCode,\n statusMessage,\n fetchStatus,\n disconnect,\n handleConnect,\n accountId,\n isLoadingWebhook,\n webhookInfo,\n fetchWebhookInfo,\n updateWebhook,\n };\n },\n});\n</script>\n\n<template>\n <div class=\"mx-8 mt-6\">\n <div class=\"bg-white p-6 rounded-lg border border-n-weak\">\n <h3 class=\"text-lg font-medium text-n-slate-12 mb-4\">\n {{ $t('INBOX_MGMT.ADD.WHATSAPP.PROVIDERS.WUZAPI') }} -\n {{ $t('INBOX_MGMT.SETTINGS_POPUP.MESSENGER_CONFIG') }}\n </h3>\n\n <div v-if=\"accountId\" class=\"flex flex-col items-center\">\n <div v-if=\"isConnected\" class=\"flex flex-col items-center\">\n <div class=\"text-green-600 font-bold mb-4 flex items-center gap-2\">\n <span class=\"i-woot-checkmark-circle text-2xl\" />\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED') }}\n </div>\n <p class=\"text-n-slate-11 mb-4\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED_DESC') }}\n </p>\n <NextButton\n color=\"ruby\"\n :is-loading=\"isLoading\"\n :label=\"$t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT')\"\n @click=\"disconnect\"\n />\n </div>\n\n <div v-else class=\"flex flex-col items-center\">\n <div v-if=\"qrCode\" class=\"mb-4\">\n <img\n :src=\"qrCode\"\n alt=\"Whatsapp QR Code\"\n class=\"w-64 h-64 border rounded\"\n />\n <p class=\"text-center text-sm text-n-slate-11 mt-2\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.SCAN_QR') }}\n </p>\n </div>\n\n <div v-else class=\"flex flex-col items-center mb-4\">\n <p class=\"text-n-slate-11 mb-4\">\n {{\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT_DESC') ||\n 'Click to initiate connection'\n }}\n </p>\n <NextButton\n color=\"blue\"\n :is-loading=\"isLoading\"\n :label=\"\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT') || 'Connect WhatsApp'\n \"\n @click=\"handleConnect\"\n />\n </div>\n\n <div class=\"mt-4 text-xs text-n-slate-10\">\n Status: {{ statusMessage }}\n </div>\n </div>\n </div>\n\n <div v-else class=\"text-red-600 p-4\">\n Error: Account ID not loaded. Please refresh the page.\n </div>\n <div class=\"mt-8 pt-6 border-t border-n-weak w-full\">\n <h4 class=\"text-md font-medium text-n-slate-12 mb-4\">{{$t(`\n Webhook Configuration\n `)}}"}}]}],"suppressedMessages":[],"errorCount":5,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\n// Use global axios (window.axios) which has interceptors for auth headers\nimport { defineComponent, ref, onMounted, onUnmounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default defineComponent({\n components: { NextButton },\n props: {\n inbox: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const store = useStore();\n const isLoading = ref(false);\n const isConnected = ref(false);\n const qrCode = ref('');\n const statusMessage = ref('');\n let pollInterval = null;\n\n // Get accountId reliably from global store (preferred) or inbox prop\n const accountId = computed(() => {\n return store.getters.getCurrentAccountId || props.inbox.account_id;\n });\n\n // Helper for API URL\n const getApiUrl = endpoint => {\n if (!accountId.value) throw new Error('Account ID missing');\n return `/api/v1/accounts/${accountId.value}/inboxes/${props.inbox.id}/wuzapi${endpoint}`;\n };\n\n const fetchStatus = async () => {\n if (!accountId.value) return;\n\n try {\n const response = await window.axios.get(getApiUrl(''));\n\n const data = response.data;\n // Wuzapi format: { data: { connected: true, jid: \"...\", details: \"...\" } }\n const wuzapiData = data.data || {};\n\n const isWuzapiConnected =\n wuzapiData.connected === true && !!wuzapiData.jid;\n\n // Also keep legacy check just in case payload differs\n const legacyStatus = data.status || data.state;\n const isLegacyConnected = ['CONNECTED', 'inChat', 'success'].includes(\n legacyStatus\n );\n\n isConnected.value = isWuzapiConnected || isLegacyConnected;\n statusMessage.value = wuzapiData.details || legacyStatus || 'Unknown';\n\n if (isConnected.value) {\n qrCode.value = '';\n stopPolling();\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || error.message || 'Check failed';\n }\n };\n\n const fetchQrCode = async () => {\n try {\n const response = await window.axios.get(getApiUrl('/qr'));\n\n // Backend now normalizes to 'qrcode' in most cases, but we keep robust checks\n const d = response.data;\n const qrcodeData =\n d.qrcode ||\n d.qr ||\n d.QRCode ||\n d.data?.qrcode ||\n d.data?.qr ||\n (typeof d.data === 'string' ? d.data : null);\n\n if (qrcodeData && qrcodeData.length > 20) {\n qrCode.value = qrcodeData;\n startPolling();\n } else {\n // Fallback: maybe we are already connected?\n await fetchStatus();\n if (!isConnected.value) {\n statusMessage.value = 'QR Code not received and not connected.';\n }\n }\n } catch (error) {\n statusMessage.value =\n error.response?.data?.error || 'Failed to load QR';\n }\n };\n\n const handleConnect = async () => {\n if (!accountId.value) {\n useAlert('Error: Account ID missing');\n return;\n }\n\n isLoading.value = true;\n try {\n // 1. Call Connect\n const connectUrl = getApiUrl('/connect');\n await window.axios.post(connectUrl);\n // 2. Fetch QR\n await fetchQrCode();\n } catch (error) {\n useAlert(error.response?.data?.error || 'Connection failed');\n } finally {\n isLoading.value = false;\n }\n };\n\n const disconnect = async () => {\n isLoading.value = true;\n try {\n await window.axios.post(getApiUrl('/disconnect'));\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_SUCCESS'));\n isConnected.value = false;\n qrCode.value = '';\n fetchStatus();\n } catch (error) {\n useAlert(t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT_ERROR'));\n } finally {\n isLoading.value = false;\n }\n };\n\n // Function hoisting allows use before definition\n function stopPolling() {\n if (pollInterval) {\n clearInterval(pollInterval);\n pollInterval = null;\n }\n }\n\n function startPolling() {\n if (pollInterval) return;\n // Poll every 5 seconds to check status AND refresh QR code\n pollInterval = setInterval(async () => {\n await fetchStatus();\n // If still not connected (and polling hasn't been stopped by fetchStatus), refresh QR\n if (pollInterval && !isConnected.value) {\n await fetchQrCode();\n }\n }, 5000);\n }\n\n const isLoadingWebhook = ref(false);\n const webhookInfo = ref(null);\n\n const fetchWebhookInfo = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.get(getApiUrl('/webhook_info'));\n webhookInfo.value = response.data;\n useAlert('Webhook info fetched successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to fetch webhook info');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n const updateWebhook = async () => {\n isLoadingWebhook.value = true;\n try {\n const response = await window.axios.put(getApiUrl('/update_webhook'));\n webhookInfo.value = {\n message: response.data.message,\n url: response.data.webhook_url,\n };\n useAlert('Webhook updated successfully');\n } catch (error) {\n useAlert(error.response?.data?.error || 'Failed to update webhook');\n } finally {\n isLoadingWebhook.value = false;\n }\n };\n\n onMounted(() => {\n fetchStatus();\n });\n\n onUnmounted(() => {\n stopPolling();\n });\n\n return {\n isLoading,\n isConnected,\n qrCode,\n statusMessage,\n fetchStatus,\n disconnect,\n handleConnect,\n accountId,\n isLoadingWebhook,\n webhookInfo,\n fetchWebhookInfo,\n updateWebhook,\n };\n },\n});\n</script>\n\n<template>\n <div class=\"mx-8 mt-6\">\n <div class=\"bg-white p-6 rounded-lg border border-n-weak\">\n <h3 class=\"text-lg font-medium text-n-slate-12 mb-4\">\n {{ $t('INBOX_MGMT.ADD.WHATSAPP.PROVIDERS.WUZAPI') }} -\n {{ $t('INBOX_MGMT.SETTINGS_POPUP.MESSENGER_CONFIG') }}\n </h3>\n\n <div v-if=\"accountId\" class=\"flex flex-col items-center\">\n <div v-if=\"isConnected\" class=\"flex flex-col items-center\">\n <div class=\"text-green-600 font-bold mb-4 flex items-center gap-2\">\n <span class=\"i-woot-checkmark-circle text-2xl\" />\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED') }}\n </div>\n <p class=\"text-n-slate-11 mb-4\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.CONNECTED_DESC') }}\n </p>\n <NextButton\n color=\"ruby\"\n :is-loading=\"isLoading\"\n :label=\"$t('INBOX_MGMT.EDIT.WUZAPI.DISCONNECT')\"\n @click=\"disconnect\"\n />\n </div>\n\n <div v-else class=\"flex flex-col items-center\">\n <div v-if=\"qrCode\" class=\"mb-4\">\n <img\n :src=\"qrCode\"\n alt=\"Whatsapp QR Code\"\n class=\"w-64 h-64 border rounded\"\n />\n <p class=\"text-center text-sm text-n-slate-11 mt-2\">\n {{ $t('INBOX_MGMT.EDIT.WUZAPI.SCAN_QR') }}\n </p>\n </div>\n\n <div v-else class=\"flex flex-col items-center mb-4\">\n <p class=\"text-n-slate-11 mb-4\">\n {{\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT_DESC') ||\n 'Click to initiate connection'\n }}\n </p>\n <NextButton\n color=\"blue\"\n :is-loading=\"isLoading\"\n :label=\"\n $t('INBOX_MGMT.EDIT.WUZAPI.CONNECT') || 'Connect WhatsApp'\n \"\n @click=\"handleConnect\"\n />\n </div>\n\n <div class=\"mt-4 text-xs text-n-slate-10\">\n Status: {{ statusMessage }}\n </div>\n </div>\n </div>\n\n <div v-else class=\"text-red-600 p-4\">\n Error: Account ID not loaded. Please refresh the page.\n </div>\n <div class=\"mt-8 pt-6 border-t border-n-weak w-full\">\n <h4 class=\"text-md font-medium text-n-slate-12 mb-4\">\n Webhook Configuration\n </h4>\n <div class=\"flex gap-4 mb-4\">\n <NextButton\n icon=\"i-woot-refresh\"\n :is-loading=\"isLoadingWebhook\"\n label=\"Get Webhook Info\"\n @click=\"fetchWebhookInfo\"\n />\n <NextButton\n icon=\"i-woot-upload\"\n :is-loading=\"isLoadingWebhook\"\n label=\"Update Webhook Connection\"\n @click=\"updateWebhook\"\n />\n </div>\n\n <div\n v-if=\"webhookInfo\"\n class=\"bg-n-alpha-1 p-4 rounded text-sm font-mono overflow-auto\"\n >\n <pre>{{ JSON.stringify(webhookInfo, null, 2) }}</pre>\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.ACCOUNT_HEALTH.VALUES.TIERS.${tier}`' dynamic key is used'","line":125,"column":3,"nodeType":"CallExpression","endLine":125,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.ACCOUNT_HEALTH.VALUES.STATUSES.${status}`' dynamic key is used'","line":128,"column":3,"nodeType":"CallExpression","endLine":128,"endColumn":59},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.ACCOUNT_HEALTH.VALUES.MODES.${mode}`' dynamic key is used'","line":131,"column":3,"nodeType":"CallExpression","endLine":131,"endColumn":54}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nimport ButtonV4 from 'next/button/Button.vue';\nimport Icon from 'dashboard/components-next/icon/Icon.vue';\n\nconst props = defineProps({\n healthData: {\n type: Object,\n default: null,\n },\n});\n\nconst { t } = useI18n();\n\nconst QUALITY_COLORS = {\n GREEN: 'text-n-teal-11',\n YELLOW: 'text-n-amber-11',\n RED: 'text-n-ruby-11',\n UNKNOWN: 'text-n-slate-12',\n};\n\nconst STATUS_COLORS = {\n APPROVED: 'text-n-teal-11',\n PENDING_REVIEW: 'text-n-amber-11',\n AVAILABLE_WITHOUT_REVIEW: 'text-n-teal-11',\n REJECTED: 'text-n-ruby-9',\n DECLINED: 'text-n-ruby-9',\n};\n\nconst MODE_COLORS = {\n LIVE: 'text-n-teal-11',\n SANDBOX: 'text-n-slate-11',\n};\n\nconst healthItems = computed(() => {\n if (!props.healthData) {\n return [];\n }\n\n const {\n display_phone_number: displayPhoneNumber,\n verified_name: verifiedName,\n name_status: nameStatus,\n quality_rating: qualityRating,\n messaging_limit_tier: messagingLimitTier,\n account_mode: accountMode,\n } = props.healthData;\n\n return [\n {\n key: 'displayPhoneNumber',\n label: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.DISPLAY_PHONE_NUMBER.LABEL'),\n value: displayPhoneNumber || 'N/A',\n tooltip: t(\n 'INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.DISPLAY_PHONE_NUMBER.TOOLTIP'\n ),\n show: true,\n },\n {\n key: 'verifiedName',\n label: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.VERIFIED_NAME.LABEL'),\n value: verifiedName || 'N/A',\n tooltip: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.VERIFIED_NAME.TOOLTIP'),\n show: true,\n },\n {\n key: 'displayNameStatus',\n label: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.DISPLAY_NAME_STATUS.LABEL'),\n value: nameStatus || 'UNKNOWN',\n tooltip: t(\n 'INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.DISPLAY_NAME_STATUS.TOOLTIP'\n ),\n show: true,\n type: 'status',\n },\n {\n key: 'qualityRating',\n label: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.QUALITY_RATING.LABEL'),\n value: qualityRating || 'UNKNOWN',\n tooltip: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.QUALITY_RATING.TOOLTIP'),\n show: true,\n type: 'quality',\n },\n {\n key: 'messagingLimitTier',\n label: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.MESSAGING_LIMIT_TIER.LABEL'),\n value: messagingLimitTier || 'UNKNOWN',\n tooltip: t(\n 'INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.MESSAGING_LIMIT_TIER.TOOLTIP'\n ),\n show: true,\n type: 'tier',\n },\n {\n key: 'accountMode',\n label: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.ACCOUNT_MODE.LABEL'),\n value: accountMode || 'UNKNOWN',\n tooltip: t('INBOX_MGMT.ACCOUNT_HEALTH.FIELDS.ACCOUNT_MODE.TOOLTIP'),\n show: true,\n type: 'mode',\n },\n ];\n});\n\nconst handleGoToSettings = () => {\n const { business_id: businessId } = props.healthData || {};\n\n if (businessId) {\n // WhatsApp Business Manager URL with specific business ID and phone numbers tab\n const whatsappBusinessUrl = `https://business.facebook.com/latest/whatsapp_manager/phone_numbers/?business_id=${businessId}&tab=phone-numbers`;\n window.open(whatsappBusinessUrl, '_blank');\n } else {\n // Fallback to general WhatsApp Business Manager if business_id is not available\n const fallbackUrl = 'https://business.facebook.com/';\n window.open(fallbackUrl, '_blank');\n }\n};\n\nconst getQualityRatingTextColor = rating =>\n QUALITY_COLORS[rating] || QUALITY_COLORS.UNKNOWN;\n\nconst formatTierDisplay = tier =>\n t(`INBOX_MGMT.ACCOUNT_HEALTH.VALUES.TIERS.${tier}`) || tier;\n\nconst formatStatusDisplay = status =>\n t(`INBOX_MGMT.ACCOUNT_HEALTH.VALUES.STATUSES.${status}`) || status;\n\nconst formatModeDisplay = mode =>\n t(`INBOX_MGMT.ACCOUNT_HEALTH.VALUES.MODES.${mode}`) || mode;\n\nconst getModeStatusTextColor = mode => MODE_COLORS[mode] || 'text-n-slate-12';\n\nconst getStatusTextColor = status => STATUS_COLORS[status] || 'text-n-slate-12';\n</script>\n\n<template>\n <div class=\"gap-4 pt-8 mx-8\">\n <div\n class=\"px-5 py-5 space-y-6 rounded-xl border shadow-sm border-n-weak bg-n-solid-2\"\n >\n <div\n class=\"flex flex-col gap-5 justify-between items-start w-full md:flex-row\"\n >\n <div>\n <span class=\"text-base font-medium text-n-slate-12\">\n {{ t('INBOX_MGMT.ACCOUNT_HEALTH.TITLE') }}\n </span>\n <p class=\"mt-1 text-sm text-n-slate-11\">\n {{ t('INBOX_MGMT.ACCOUNT_HEALTH.DESCRIPTION') }}\n </p>\n </div>\n <ButtonV4\n sm\n solid\n blue\n class=\"flex-shrink-0\"\n @click=\"handleGoToSettings\"\n >\n {{ t('INBOX_MGMT.ACCOUNT_HEALTH.GO_TO_SETTINGS') }}\n </ButtonV4>\n </div>\n\n <div v-if=\"healthData\" class=\"grid grid-cols-1 gap-4 xs:grid-cols-2\">\n <div\n v-for=\"item in healthItems\"\n :key=\"item.key\"\n class=\"flex flex-col gap-2 p-4 rounded-lg border border-n-weak bg-n-solid-1\"\n >\n <div class=\"flex gap-2 items-center\">\n <span class=\"text-sm font-medium text-n-slate-11\">\n {{ item.label }}\n </span>\n <Icon\n v-tooltip.top=\"item.tooltip\"\n icon=\"i-lucide-info\"\n class=\"flex-shrink-0 w-4 h-4 cursor-help text-n-slate-9\"\n />\n </div>\n <div class=\"flex items-center\">\n <span\n v-if=\"item.type === 'quality'\"\n class=\"inline-flex items-center px-2 py-0.5 min-h-6 text-xs font-medium rounded-md bg-n-alpha-2\"\n :class=\"getQualityRatingTextColor(item.value)\"\n >\n {{ item.value }}\n </span>\n <span\n v-else-if=\"item.type === 'status'\"\n class=\"inline-flex items-center px-2 py-0.5 min-h-6 text-xs font-medium rounded-md bg-n-alpha-2\"\n :class=\"getStatusTextColor(item.value)\"\n >\n {{ formatStatusDisplay(item.value) }}\n </span>\n <span\n v-else-if=\"item.type === 'mode'\"\n class=\"inline-flex items-center px-2 py-0.5 min-h-6 text-xs font-medium rounded-md bg-n-alpha-2\"\n :class=\"getModeStatusTextColor(item.value)\"\n >\n {{ formatModeDisplay(item.value) }}\n </span>\n <span\n v-else-if=\"item.type === 'tier'\"\n class=\"text-sm font-medium text-n-slate-12\"\n >\n {{ formatTierDisplay(item.value) }}\n </span>\n <span v-else class=\"text-sm font-medium text-n-slate-12\">{{\n item.value\n }}</span>\n </div>\n </div>\n </div>\n\n <div v-else class=\"pt-8\">\n <div\n class=\"flex justify-center items-center p-8 text-center text-n-slate-11\"\n >\n <div>\n <Icon icon=\"i-lucide-activity\" class=\"mb-2 w-8 h-8\" />\n <p class=\"text-sm\">{{ t('INBOX_MGMT.ACCOUNT_HEALTH.NO_DATA') }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BotConfiguration.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BusinessDay.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/ChannelName.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INBOX_MGMT.CHANNELS.${i18nMap[props.channelType]}`' dynamic key is used'","line":50,"column":10,"nodeType":"CallExpression","endLine":50,"endColumn":64}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useI18n } from 'vue-i18n';\nimport { useStoreGetters } from 'dashboard/composables/store';\nimport { computed } from 'vue';\n\nconst props = defineProps({\n channelType: {\n type: String,\n required: true,\n },\n medium: {\n type: String,\n default: '',\n },\n});\nconst getters = useStoreGetters();\nconst { t } = useI18n();\nconst globalConfig = computed(() => getters['globalConfig/get'].value);\n\nconst i18nMap = {\n 'Channel::FacebookPage': 'MESSENGER',\n 'Channel::WebWidget': 'WEB_WIDGET',\n 'Channel::TwitterProfile': 'TWITTER_PROFILE',\n 'Channel::TwilioSms': 'TWILIO_SMS',\n 'Channel::Whatsapp': 'WHATSAPP',\n 'Channel::Sms': 'SMS',\n 'Channel::Email': 'EMAIL',\n 'Channel::Telegram': 'TELEGRAM',\n 'Channel::Line': 'LINE',\n 'Channel::Api': 'API',\n 'Channel::Instagram': 'INSTAGRAM',\n 'Channel::Tiktok': 'TIKTOK',\n 'Channel::Voice': 'VOICE',\n};\n\nconst twilioChannelName = () => {\n if (props.medium === 'whatsapp') {\n return t(`INBOX_MGMT.CHANNELS.WHATSAPP`);\n }\n return t(`INBOX_MGMT.CHANNELS.TWILIO_SMS`);\n};\n\nconst readableChannelName = computed(() => {\n if (props.channelType === 'Channel::Api') {\n return globalConfig.value.apiChannelName || t('INBOX_MGMT.CHANNELS.API');\n }\n if (props.channelType === 'Channel::TwilioSms') {\n return twilioChannelName();\n }\n return t(`INBOX_MGMT.CHANNELS.${i18nMap[props.channelType]}`);\n});\n</script>\n\n<template>\n <span>\n {{ readableChannelName }}\n </span>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InboxAutoResolve.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InboxReconnectionRequired.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/InputRadioGroup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/JasmineKnowledgeBase.vue","messages":[{"ruleId":"no-restricted-globals","severity":2,"message":"Unexpected use of 'confirm'.","line":104,"column":12,"nodeType":"Identifier","messageId":"defaultMessage","endLine":104,"endColumn":19},{"ruleId":"no-alert","severity":1,"message":"Unexpected confirm.","line":104,"column":12,"nodeType":"CallExpression","messageId":"unexpected","endLine":104,"endColumn":69},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":145,"column":78,"nodeType":"VText","messageId":"unexpected","endLine":147,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Knowledge Base\n ' is used","line":145,"column":78,"nodeType":null,"endLine":147,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4227],"text":"<i18n>\n{\n \"en\": {\n \"\\n Knowledge Base\\n \": \"\\n Knowledge Base\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">{{$t(`\n Knowledge Base\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":148,"column":63,"nodeType":"VText","messageId":"unexpected","endLine":150,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Manage knowledge collections for this inbox\n ' is used","line":148,"column":63,"nodeType":null,"endLine":150,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4358],"text":"<i18n>\n{\n \"en\": {\n \"\\n Manage knowledge collections for this inbox\\n \": \"\\n Manage knowledge collections for this inbox\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">{{$t(`\n Manage knowledge collections for this inbox\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":152,"column":75,"nodeType":"VText","messageId":"unexpected","endLine":154,"endColumn":7},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n + New Collection\n ' is used","line":152,"column":75,"nodeType":null,"endLine":154,"endColumn":7,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,4482],"text":"<i18n>\n{\n \"en\": {\n \"\\n + New Collection\\n \": \"\\n + New Collection\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">{{$t(`\n + New Collection\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":199,"column":75,"nodeType":"VText","messageId":"unexpected","endLine":201,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Documents\n ' is used","line":199,"column":75,"nodeType":null,"endLine":201,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6224],"text":"<i18n>\n{\n \"en\": {\n \"\\n Documents\\n \": \"\\n Documents\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">{{$t(`\n Documents\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":208,"column":67,"nodeType":"VText","messageId":"unexpected","endLine":210,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Loading documents...\n ' is used","line":208,"column":67,"nodeType":null,"endLine":210,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,6510],"text":"<i18n>\n{\n \"en\": {\n \"\\n Loading documents...\\n \": \"\\n Loading documents...\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />{{$t(`\n Loading documents...\n `)}}"}}]},{"ruleId":"prettier/prettier","severity":2,"message":"Parsing error: Opening tag \"span\" not terminated.","line":236,"column":18,"nodeType":null,"endLine":240,"endColumn":30},{"ruleId":"vue/no-parsing-error","severity":2,"message":"Parsing error: Unexpected token :.","line":239,"column":19,"nodeType":"VElement","messageId":"parsingError"},{"ruleId":"vue/valid-attribute-name","severity":2,"message":"Attribute name [getstatusclass(doc.status)]\" is not valid.","line":240,"column":1,"nodeType":"VAttribute","messageId":"attribute","endLine":240,"endColumn":30},{"ruleId":"vue/no-parsing-error","severity":2,"message":"Parsing error: unexpected-character-in-attribute-name.","line":240,"column":29,"nodeType":"VElement","messageId":"parsingError"},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":266,"column":14,"nodeType":"VText","messageId":"unexpected","endLine":268,"endColumn":13},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n No documents yet. Add your first document below.\n ' is used","line":266,"column":14,"nodeType":null,"endLine":268,"endColumn":13,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,8878],"text":"<i18n>\n{\n \"en\": {\n \"\\n No documents yet. Add your first document below.\\n \": \"\\n No documents yet. Add your first document below.\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >{{$t(`\n No documents yet. Add your first document below.\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":275,"column":77,"nodeType":"VText","messageId":"unexpected","endLine":277,"endColumn":13},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Add New Document\n ' is used","line":275,"column":77,"nodeType":null,"endLine":277,"endColumn":13,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,9165],"text":"<i18n>\n{\n \"en\": {\n \"\\n Add New Document\\n \": \"\\n Add New Document\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">{{$t(`\n Add New Document\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used in `placeholder`.","line":282,"column":27,"nodeType":"VLiteral","messageId":"unexpectedInAttr","endLine":282,"endColumn":54},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":296,"column":16,"nodeType":"VText","messageId":"unexpected","endLine":298,"endColumn":15},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Add Document\n ' is used","line":296,"column":16,"nodeType":null,"endLine":298,"endColumn":15,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,10080],"text":"<i18n>\n{\n \"en\": {\n \"\\n Add Document\\n \": \"\\n Add Document\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >{{$t(`\n Add Document\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":310,"column":28,"nodeType":"VText","messageId":"unexpected","endLine":310,"endColumn":74},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'No collections yet. Create one to get started.' is used","line":310,"column":28,"nodeType":null,"endLine":310,"endColumn":74,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,10446],"text":"<i18n>\n{\n \"en\": {\n \"No collections yet. Create one to get started.\": \"No collections yet. Create one to get started.\"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">{{$t('No collections yet. Create one to get started.')}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":321,"column":79,"nodeType":"VText","messageId":"unexpected","endLine":323,"endColumn":9},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Create Collection\n ' is used","line":321,"column":79,"nodeType":null,"endLine":323,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,10892],"text":"<i18n>\n{\n \"en\": {\n \"\\n Create Collection\\n \": \"\\n Create Collection\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">No collections yet. Create one to get started.</p>\n </div>\n </div>\n\n <!-- Create Collection Modal -->\n <div\n v-if=\"showCreateCollectionModal\"\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n @click.self=\"showCreateCollectionModal = false\"\n >\n <div class=\"bg-white dark:bg-slate-900 p-6 rounded-xl w-96 shadow-2xl\">\n <h3 class=\"text-lg font-semibold mb-4 text-slate-900 dark:text-white\">{{$t(`\n Create Collection\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used in `placeholder`.","line":328,"column":23,"nodeType":"VLiteral","messageId":"unexpectedInAttr","endLine":328,"endColumn":40},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":335,"column":35,"nodeType":"VText","messageId":"unexpected","endLine":335,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Private (This inbox only)' is used","line":335,"column":35,"nodeType":null,"endLine":335,"endColumn":60,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,11443],"text":"<i18n>\n{\n \"en\": {\n \"Private (This inbox only)\": \"Private (This inbox only)\"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">No collections yet. Create one to get started.</p>\n </div>\n </div>\n\n <!-- Create Collection Modal -->\n <div\n v-if=\"showCreateCollectionModal\"\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n @click.self=\"showCreateCollectionModal = false\"\n >\n <div class=\"bg-white dark:bg-slate-900 p-6 rounded-xl w-96 shadow-2xl\">\n <h3 class=\"text-lg font-semibold mb-4 text-slate-900 dark:text-white\">\n Create Collection\n </h3>\n <input\n v-model=\"newCollectionName\"\n type=\"text\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n placeholder=\"Collection name\"\n @keyup.enter=\"createCollection\"\n />\n <select\n v-model=\"newCollectionVisibility\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n >\n <option value=\"private\">{{$t('Private (This inbox only)')}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":336,"column":34,"nodeType":"VText","messageId":"unexpected","endLine":336,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Shared (All inboxes)' is used","line":336,"column":34,"nodeType":null,"endLine":336,"endColumn":54,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,11506],"text":"<i18n>\n{\n \"en\": {\n \"Shared (All inboxes)\": \"Shared (All inboxes)\"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">No collections yet. Create one to get started.</p>\n </div>\n </div>\n\n <!-- Create Collection Modal -->\n <div\n v-if=\"showCreateCollectionModal\"\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n @click.self=\"showCreateCollectionModal = false\"\n >\n <div class=\"bg-white dark:bg-slate-900 p-6 rounded-xl w-96 shadow-2xl\">\n <h3 class=\"text-lg font-semibold mb-4 text-slate-900 dark:text-white\">\n Create Collection\n </h3>\n <input\n v-model=\"newCollectionName\"\n type=\"text\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n placeholder=\"Collection name\"\n @keyup.enter=\"createCollection\"\n />\n <select\n v-model=\"newCollectionVisibility\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n >\n <option value=\"private\">Private (This inbox only)</option>\n <option value=\"shared\">{{$t('Shared (All inboxes)')}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":342,"column":12,"nodeType":"VText","messageId":"unexpected","endLine":344,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Cancel\n ' is used","line":342,"column":12,"nodeType":null,"endLine":344,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,11726],"text":"<i18n>\n{\n \"en\": {\n \"\\n Cancel\\n \": \"\\n Cancel\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">No collections yet. Create one to get started.</p>\n </div>\n </div>\n\n <!-- Create Collection Modal -->\n <div\n v-if=\"showCreateCollectionModal\"\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n @click.self=\"showCreateCollectionModal = false\"\n >\n <div class=\"bg-white dark:bg-slate-900 p-6 rounded-xl w-96 shadow-2xl\">\n <h3 class=\"text-lg font-semibold mb-4 text-slate-900 dark:text-white\">\n Create Collection\n </h3>\n <input\n v-model=\"newCollectionName\"\n type=\"text\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n placeholder=\"Collection name\"\n @keyup.enter=\"createCollection\"\n />\n <select\n v-model=\"newCollectionVisibility\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n >\n <option value=\"private\">Private (This inbox only)</option>\n <option value=\"shared\">Shared (All inboxes)</option>\n </select>\n <div class=\"flex justify-end gap-2\">\n <woot-button\n variant=\"clear\"\n @click=\"showCreateCollectionModal = false\"\n >{{$t(`\n Cancel\n `)}}"}}]},{"ruleId":"vue/no-bare-strings-in-template","severity":2,"message":"Unexpected non-translated string used.","line":348,"column":12,"nodeType":"VText","messageId":"unexpected","endLine":350,"endColumn":11},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n Create\n ' is used","line":348,"column":12,"nodeType":null,"endLine":350,"endColumn":11,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,11893],"text":"<i18n>\n{\n \"en\": {\n \"\\n Create\\n \": \"\\n Create\\n \"\n }\n}\n</i18n>\n\n<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">No collections yet. Create one to get started.</p>\n </div>\n </div>\n\n <!-- Create Collection Modal -->\n <div\n v-if=\"showCreateCollectionModal\"\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n @click.self=\"showCreateCollectionModal = false\"\n >\n <div class=\"bg-white dark:bg-slate-900 p-6 rounded-xl w-96 shadow-2xl\">\n <h3 class=\"text-lg font-semibold mb-4 text-slate-900 dark:text-white\">\n Create Collection\n </h3>\n <input\n v-model=\"newCollectionName\"\n type=\"text\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n placeholder=\"Collection name\"\n @keyup.enter=\"createCollection\"\n />\n <select\n v-model=\"newCollectionVisibility\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n >\n <option value=\"private\">Private (This inbox only)</option>\n <option value=\"shared\">Shared (All inboxes)</option>\n </select>\n <div class=\"flex justify-end gap-2\">\n <woot-button\n variant=\"clear\"\n @click=\"showCreateCollectionModal = false\"\n >\n Cancel\n </woot-button>\n <woot-button\n :disabled=\"!newCollectionName.trim()\"\n @click=\"createCollection\"\n >{{$t(`\n Create\n `)}}"}}]}],"suppressedMessages":[],"errorCount":21,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport JasmineAPI from 'dashboard/api/inbox/jasmine';\nimport { useAlert } from 'dashboard/composables';\n\nexport default {\n props: {\n inboxId: {\n type: [String, Number],\n required: true,\n },\n isTab: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n collections: [],\n isLoading: false,\n showCreateCollectionModal: false,\n newCollectionName: '',\n newCollectionVisibility: 'private',\n expandedCollectionId: null,\n documents: [],\n isLoadingDocs: false,\n newDocTitle: '',\n newDocContent: '',\n isCreatingDoc: false,\n isDeletingDocument: null, // Track which doc is being deleted\n };\n },\n mounted() {\n this.fetchCollections();\n },\n methods: {\n async fetchCollections() {\n this.isLoading = true;\n try {\n const { data } = await JasmineAPI.getCollections();\n this.collections = data;\n } catch (error) {\n useAlert('Failed to load collections');\n } finally {\n this.isLoading = false;\n }\n },\n async createCollection() {\n try {\n await JasmineAPI.createCollection({\n collection: {\n name: this.newCollectionName,\n visibility: this.newCollectionVisibility,\n owner_inbox_id: this.inboxId,\n },\n });\n this.newCollectionName = '';\n this.showCreateCollectionModal = false;\n this.fetchCollections();\n useAlert('Collection created successfully');\n } catch (error) {\n useAlert('Failed to create collection');\n }\n },\n async toggleCollection(collection) {\n if (this.expandedCollectionId === collection.id) {\n this.expandedCollectionId = null;\n this.documents = [];\n return;\n }\n this.expandedCollectionId = collection.id;\n this.fetchDocuments(collection.id);\n },\n async fetchDocuments(collectionId) {\n this.isLoadingDocs = true;\n try {\n const { data } = await JasmineAPI.getDocuments(collectionId);\n this.documents = data;\n } catch (error) {\n useAlert('Failed to load documents');\n } finally {\n this.isLoadingDocs = false;\n }\n },\n async addDocument(collectionId) {\n this.isCreatingDoc = true;\n try {\n await JasmineAPI.uploadDocument(\n collectionId,\n this.newDocContent,\n this.newDocTitle\n );\n this.newDocTitle = '';\n this.newDocContent = '';\n useAlert('Document added! Processing will start shortly.');\n // Refresh docs to show new document\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to add document');\n } finally {\n this.isCreatingDoc = false;\n }\n },\n async deleteDocument(collectionId, documentId) {\n if (!confirm('Are you sure you want to delete this document?')) return;\n this.isDeletingDocument = documentId;\n try {\n await JasmineAPI.deleteDocument(collectionId, documentId);\n useAlert('Document deleted successfully');\n this.fetchDocuments(collectionId);\n } catch (error) {\n useAlert('Failed to delete document');\n } finally {\n this.isDeletingDocument = null;\n }\n },\n getStatusClass(status) {\n const classes = {\n pending:\n 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',\n processing:\n 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n indexed:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n failed: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n };\n return classes[status] || classes.pending;\n },\n isProcessing(status) {\n return status === 'pending' || status === 'processing';\n },\n },\n};\n</script>\n\n<template>\n <div\n :class=\"{\n 'mt-8 border-t border-slate-100 dark:border-slate-800 pt-8': !isTab,\n '': isTab,\n }\"\n >\n <!-- Header -->\n <div class=\"flex justify-between items-center mb-6\">\n <div>\n <h3 class=\"text-lg font-semibold text-slate-900 dark:text-slate-100\">\n Knowledge Base\n </h3>\n <p class=\"text-sm text-slate-500 dark:text-slate-400\">\n Manage knowledge collections for this inbox\n </p>\n </div>\n <woot-button size=\"small\" @click=\"showCreateCollectionModal = true\">\n + New Collection\n </woot-button>\n </div>\n\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"flex items-center justify-center py-12\">\n <span class=\"i-lucide-loader-2 size-6 animate-spin text-slate-400\" />\n </div>\n\n <!-- Collections List -->\n <div v-else class=\"space-y-4\">\n <div\n v-for=\"collection in collections\"\n :key=\"collection.id\"\n class=\"border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\"\n >\n <!-- Collection Header -->\n <div\n class=\"flex items-center justify-between p-4 bg-white dark:bg-slate-900 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n @click=\"toggleCollection(collection)\"\n >\n <div class=\"flex items-center gap-3\">\n <span\n class=\"i-lucide-chevron-right size-4 transition-transform text-slate-400\"\n :class=\"[\n expandedCollectionId === collection.id ? 'rotate-90' : '',\n ]\"\n />\n <div>\n <h4 class=\"font-medium text-slate-800 dark:text-slate-200\">\n {{ collection.name }}\n </h4>\n <span\n class=\"text-xs uppercase tracking-wide px-1.5 py-0.5 rounded bg-slate-100 dark:bg-slate-800 text-slate-500\"\n >\n {{ collection.visibility }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Expanded: Documents -->\n <div\n v-if=\"expandedCollectionId === collection.id\"\n class=\"border-t border-slate-100 dark:border-slate-700 bg-slate-50 dark:bg-slate-800/30 p-4\"\n >\n <h5 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Documents\n </h5>\n\n <!-- Loading Documents -->\n <div\n v-if=\"isLoadingDocs\"\n class=\"flex items-center gap-2 text-sm text-slate-400 py-2\"\n >\n <span class=\"i-lucide-loader-2 size-4 animate-spin\" />\n Loading documents...\n </div>\n\n <!-- Documents List -->\n <div v-else class=\"space-y-2 mb-4\">\n <div\n v-for=\"doc in documents\"\n :key=\"doc.id\"\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-700\"\n >\n <div class=\"flex items-center gap-3 min-w-0 flex-1\">\n <span\n class=\"i-lucide-file-text size-4 text-slate-400 shrink-0\"\n />\n <div class=\"min-w-0\">\n <p\n class=\"font-medium text-sm text-slate-800 dark:text-slate-200 truncate\"\n >\n {{ doc.title || 'Untitled Document' }}\n </p>\n <p class=\"text-xs text-slate-400 truncate\">\n {{ new Date(doc.created_at).toLocaleDateString() }}\n </p>\n </div>\n </div>\n <div class=\"flex items-center gap-3 shrink-0\">\n <!-- Status Badge -->\n <span\n class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full\"\n:class=\"[\n :class=\"\n[getStatusClass(doc.status)]\"\n >\n <span\n v-if=\"isProcessing(doc.status)\"\n class=\"i-lucide-loader-2 size-3 animate-spin\"\n />\n {{ doc.status || 'pending' }}\n </span>\n <!-- Delete Button -->\n <button\n class=\"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-slate-400 hover:text-red-500 transition-colors\"\n :disabled=\"isDeletingDocument === doc.id\"\n @click.stop=\"deleteDocument(collection.id, doc.id)\"\n >\n <span\n v-if=\"isDeletingDocument === doc.id\"\n class=\"i-lucide-loader-2 size-4 animate-spin\"\n />\n <span v-else class=\"i-lucide-trash-2 size-4\" />\n </button>\n </div>\n </div>\n\n <div\n v-if=\"documents.length === 0\"\n class=\"text-center py-6 text-sm text-slate-400\"\n >\n No documents yet. Add your first document below.\n </div>\n </div>\n\n <!-- Add Document Form -->\n <div\n class=\"border-t border-slate-200 dark:border-slate-700 pt-4 mt-4\"\n >\n <h6 class=\"text-xs font-semibold uppercase text-slate-500 mb-3\">\n Add New Document\n </h6>\n <input\n v-model=\"newDocTitle\"\n type=\"text\"\n class=\"w-full mb-2 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900\"\n placeholder=\"Document title (optional)\"\n />\n <textarea\n v-model=\"newDocContent\"\n rows=\"4\"\n class=\"w-full mb-3 px-3 py-2 text-sm rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900 resize-none\"\n placeholder=\"Paste or type your knowledge content here...\"\n />\n <div class=\"flex justify-end\">\n <woot-button\n size=\"small\"\n :is-loading=\"isCreatingDoc\"\n :disabled=\"!newDocContent.trim()\"\n @click=\"addDocument(collection.id)\"\n >\n Add Document\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div\n v-if=\"collections.length === 0\"\n class=\"text-center py-12 text-slate-400\"\n >\n <span class=\"i-lucide-folder-open size-12 mx-auto mb-3 opacity-50\" />\n <p class=\"text-sm\">No collections yet. Create one to get started.</p>\n </div>\n </div>\n\n <!-- Create Collection Modal -->\n <div\n v-if=\"showCreateCollectionModal\"\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n @click.self=\"showCreateCollectionModal = false\"\n >\n <div class=\"bg-white dark:bg-slate-900 p-6 rounded-xl w-96 shadow-2xl\">\n <h3 class=\"text-lg font-semibold mb-4 text-slate-900 dark:text-white\">\n Create Collection\n </h3>\n <input\n v-model=\"newCollectionName\"\n type=\"text\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n placeholder=\"Collection name\"\n @keyup.enter=\"createCollection\"\n />\n <select\n v-model=\"newCollectionVisibility\"\n class=\"w-full mb-4 px-3 py-2 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n >\n <option value=\"private\">Private (This inbox only)</option>\n <option value=\"shared\">Shared (All inboxes)</option>\n </select>\n <div class=\"flex justify-end gap-2\">\n <woot-button\n variant=\"clear\"\n @click=\"showCreateCollectionModal = false\"\n >\n Cancel\n </woot-button>\n <woot-button\n :disabled=\"!newCollectionName.trim()\"\n @click=\"createCollection\"\n >\n Create\n </woot-button>\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/SenderNameExamplePreview.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/SingleSelectDropdown.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/components/WeeklyAvailability.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/facebook/Reauthorize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/specs/businessHour.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/inbox.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/CollaboratorsPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/ConfigurationPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/CustomerSatisfactionPage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/components/CSATDisplayTypeSelector.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/components/CSATEmojiInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/components/CSATStarInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/DashboardApps/DashboardAppModal.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.HEADER`' dynamic key is used'","line":53,"column":14,"nodeType":"CallExpression","endLine":53,"endColumn":80},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.FORM_SUBMIT`' dynamic key is used'","line":56,"column":14,"nodeType":"CallExpression","endLine":58,"endColumn":8},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.API_SUCCESS`' dynamic key is used'","line":96,"column":11,"nodeType":"CallExpression","endLine":98,"endColumn":12},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.API_ERROR`' dynamic key is used'","line":103,"column":11,"nodeType":"CallExpression","endLine":103,"endColumn":80}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, url } from '@vuelidate/validators';\nimport { useAlert } from 'dashboard/composables';\n\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n show: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'create',\n },\n selectedAppData: {\n type: Object,\n default: () => ({}),\n },\n },\n emits: ['close'],\n setup() {\n return { v$: useVuelidate() };\n },\n validations: {\n app: {\n title: { required },\n content: {\n type: { required },\n url: { required, url },\n },\n },\n },\n data() {\n return {\n isLoading: false,\n app: {\n title: '',\n content: {\n type: 'frame',\n url: '',\n },\n },\n };\n },\n computed: {\n header() {\n return this.$t(`INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.HEADER`);\n },\n submitButtonLabel() {\n return this.$t(\n `INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.FORM_SUBMIT`\n );\n },\n },\n mounted() {\n if (this.mode === 'UPDATE' && this.selectedAppData) {\n this.app.title = this.selectedAppData.title;\n this.app.content = this.selectedAppData.content[0];\n }\n },\n methods: {\n closeModal() {\n // Reset the data once closed\n this.app = {\n title: '',\n content: { type: 'frame', url: '' },\n };\n this.$emit('close');\n },\n async submit() {\n try {\n this.v$.$touch();\n if (this.v$.$invalid) {\n return;\n }\n\n const action = this.mode.toLowerCase();\n const payload = {\n title: this.app.title,\n content: [this.app.content],\n };\n\n if (action === 'update') {\n payload.id = this.selectedAppData.id;\n }\n\n this.isLoading = true;\n await this.$store.dispatch(`dashboardApps/${action}`, payload);\n useAlert(\n this.$t(\n `INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.API_SUCCESS`\n )\n );\n this.closeModal();\n } catch (err) {\n useAlert(\n this.$t(`INTEGRATION_SETTINGS.DASHBOARD_APPS.${this.mode}.API_ERROR`)\n );\n } finally {\n this.isLoading = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <woot-modal :show=\"show\" :on-close=\"closeModal\">\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header :header-title=\"header\" />\n <form class=\"w-full\" @submit.prevent=\"submit\">\n <woot-input\n v-model=\"app.title\"\n :class=\"{ error: v$.app.title.$error }\"\n class=\"w-full\"\n :label=\"$t('INTEGRATION_SETTINGS.DASHBOARD_APPS.FORM.TITLE_LABEL')\"\n :placeholder=\"\n $t('INTEGRATION_SETTINGS.DASHBOARD_APPS.FORM.TITLE_PLACEHOLDER')\n \"\n :error=\"\n v$.app.title.$error\n ? $t('INTEGRATION_SETTINGS.DASHBOARD_APPS.FORM.TITLE_ERROR')\n : null\n \"\n data-testid=\"app-title\"\n @input=\"v$.app.title.$touch\"\n @blur=\"v$.app.title.$touch\"\n />\n <woot-input\n v-model=\"app.content.url\"\n :class=\"{ error: v$.app.content.url.$error }\"\n class=\"w-full\"\n :label=\"$t('INTEGRATION_SETTINGS.DASHBOARD_APPS.FORM.URL_LABEL')\"\n :placeholder=\"\n $t('INTEGRATION_SETTINGS.DASHBOARD_APPS.FORM.URL_PLACEHOLDER')\n \"\n :error=\"\n v$.app.content.url.$error\n ? $t('INTEGRATION_SETTINGS.DASHBOARD_APPS.FORM.URL_ERROR')\n : null\n \"\n data-testid=\"app-url\"\n @input=\"v$.app.content.url.$touch\"\n @blur=\"v$.app.content.url.$touch\"\n />\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"\n $t('INTEGRATION_SETTINGS.DASHBOARD_APPS.CREATE.FORM_CANCEL')\n \"\n @click.prevent=\"closeModal\"\n />\n <NextButton\n type=\"submit\"\n :label=\"submitButtonLabel\"\n :disabled=\"v$.$invalid\"\n :is-loading=\"isLoading\"\n />\n </div>\n </form>\n </div>\n </woot-modal>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/DashboardApps/DashboardAppsRow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/DashboardApps/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Integration.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/IntegrationHooks.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/IntegrationItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Linear.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/LlmModelTester.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/MultipleIntegrationHooks.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`INTEGRATION_APPS.SIDEBAR_DESCRIPTION.${integration.name.toUpperCase()}`' dynamic key is used'","line":63,"column":9,"nodeType":"CallExpression","endLine":66,"endColumn":10}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { useIntegrationHook } from 'dashboard/composables/useIntegrationHook';\nimport BaseSettingsHeader from 'dashboard/routes/dashboard/settings/components/BaseSettingsHeader.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n BaseSettingsHeader,\n NextButton,\n },\n props: {\n integrationId: {\n type: String,\n required: true,\n },\n showAddButton: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['delete', 'add'],\n setup(props) {\n const { integration, isHookTypeInbox, hasConnectedHooks } =\n useIntegrationHook(props.integrationId);\n return { integration, isHookTypeInbox, hasConnectedHooks };\n },\n computed: {\n ...mapGetters({\n globalConfig: 'globalConfig/get',\n }),\n hookHeaders() {\n return this.integration.visible_properties;\n },\n hooks() {\n if (!this.hasConnectedHooks) {\n return [];\n }\n const { hooks } = this.integration;\n return hooks.map(hook => ({\n ...hook,\n id: hook.id,\n properties: this.hookHeaders.map(property =>\n hook.settings[property] ? hook.settings[property] : '--'\n ),\n }));\n },\n },\n mounted() {},\n methods: {\n inboxName(hook) {\n return hook.inbox ? hook.inbox.name : '';\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col flex-1 gap-8 overflow-auto\">\n <BaseSettingsHeader\n :title=\"integration.name\"\n :description=\"\n $t(\n `INTEGRATION_APPS.SIDEBAR_DESCRIPTION.${integration.name.toUpperCase()}`,\n { installationName: globalConfig.installationName }\n )\n \"\n :feature-name=\"integrationId\"\n :back-button-label=\"$t('INTEGRATION_SETTINGS.HEADER')\"\n >\n <template #actions>\n <NextButton\n v-if=\"showAddButton\"\n icon=\"i-lucide-circle-plus\"\n :label=\"$t('INTEGRATION_APPS.ADD_BUTTON')\"\n @click=\"$emit('add')\"\n />\n </template>\n </BaseSettingsHeader>\n <div class=\"w-full\">\n <table v-if=\"hasConnectedHooks\">\n <thead\n class=\"[&>th]:font-semibold [&>th]:tracking-[1px] ltr:[&>th]:text-left rtl:[&>th]:text-right [&>th]:px-2.5 [&>th]:uppercase [&>th]:text-n-slate-12\"\n >\n <th\n v-for=\"hookHeader in hookHeaders\"\n :key=\"hookHeader\"\n class=\"ltr:!pl-0 rtl:!pr-0\"\n >\n {{ hookHeader }}\n </th>\n <th v-if=\"isHookTypeInbox\">\n {{ $t('INTEGRATION_APPS.LIST.INBOX') }}\n </th>\n </thead>\n <tbody>\n <tr\n v-for=\"hook in hooks\"\n :key=\"hook.id\"\n class=\"border-b border-n-weak [&>td]:p-2.5 [&>td]:text-n-slate-12\"\n >\n <td\n v-for=\"property in hook.properties\"\n :key=\"property\"\n class=\"ltr:!pl-0 rtl:!pr-0\"\n >\n {{ property }}\n </td>\n <td v-if=\"isHookTypeInbox\" class=\"break-words\">\n {{ inboxName(hook) }}\n </td>\n <td class=\"flex justify-end gap-1\">\n <NextButton\n v-tooltip.top=\"$t('INTEGRATION_APPS.LIST.DELETE.BUTTON_TEXT')\"\n icon=\"i-lucide-trash-2\"\n xs\n ruby\n faded\n @click=\"$emit('delete', hook)\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n <p v-else class=\"flex flex-col items-center justify-center h-full\">\n {{\n $t('INTEGRATION_APPS.NO_HOOK_CONFIGURED', {\n integrationId: integration.id,\n })\n }}\n </p>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/NewHook.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Notion.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Shopify.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/ShowIntegration.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/SingleIntegrationHooks.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Slack.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Slack/SelectChannelWarning.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '\n #' is used","line":103,"column":12,"nodeType":null,"endLine":104,"endColumn":14,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3176],"text":"<i18n>\n{\n \"en\": {\n \"\\n #\": \"\\n #\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useBranding } from 'shared/composables/useBranding';\nimport { useMessageFormatter } from 'shared/composables/useMessageFormatter';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n hasConnectedAChannel: {\n type: Boolean,\n default: true,\n },\n});\n\nconst store = useStore();\nconst { t } = useI18n();\n\nconst { formatMessage } = useMessageFormatter();\nconst { replaceInstallationName } = useBranding();\n\nconst selectedChannelId = ref('');\nconst availableChannels = ref([]);\n\nconst uiFlags = computed(() => store.getters['integrations/getUIFlags']);\n\nconst errorDescription = computed(() => {\n return !props.hasConnectedAChannel\n ? t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.DESCRIPTION')\n : t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.EXPIRED');\n});\n\nconst formattedErrorMessage = computed(() => {\n return formatMessage(replaceInstallationName(errorDescription.value), false);\n});\n\nconst fetchChannels = async () => {\n try {\n availableChannels.value = await store.dispatch(\n 'integrations/listAllSlackChannels'\n );\n availableChannels.value.sort((c1, c2) => c1.name - c2.name);\n } catch {\n t('INTEGRATION_SETTINGS.SLACK.FAILED_TO_FETCH_CHANNELS');\n availableChannels.value = [];\n }\n};\n\nconst updateIntegration = async () => {\n try {\n await store.dispatch('integrations/updateSlack', {\n referenceId: selectedChannelId.value,\n });\n useAlert(t('INTEGRATION_SETTINGS.SLACK.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(error.message || 'INTEGRATION_SETTINGS.SLACK.UPDATE_ERROR');\n }\n};\n</script>\n\n<template>\n <div\n class=\"px-6 py-4 mb-4 outline outline-n-container outline-1 bg-n-alpha-3 rounded-md shadow\"\n >\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <div class=\"i-lucide-bell text-xl text-n-amber-11 mt-1\" />\n </div>\n <div class=\"ml-3\">\n <p class=\"mb-1 text-base font-semibold text-n-slate-12\">\n {{\n $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.ATTENTION_REQUIRED')\n }}\n </p>\n <div class=\"mt-2 text-sm text-n-slate-11 mb-3\">\n <p v-dompurify-html=\"formattedErrorMessage\" />\n </div>\n </div>\n </div>\n <div v-if=\"!hasConnectedAChannel\" class=\"mb-2 mt-1 ml-8\">\n <Button\n v-if=\"!availableChannels.length\"\n amber\n sm\n :is-loading=\"uiFlags.isFetchingSlackChannels\"\n @click=\"fetchChannels\"\n >\n {{ $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.BUTTON_TEXT') }}\n </Button>\n <div v-else class=\"inline-flex\">\n <select\n v-model=\"selectedChannelId\"\n class=\"h-8 py-1 mr-4 text-xs leading-4 border border-n-amber-10\"\n >\n <option value=\"\">\n {{ $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.OPTION_LABEL') }}\n </option>\n <option\n v-for=\"channel in availableChannels\"\n :key=\"channel.id\"\n :value=\"channel.id\"\n >{{$t(`\n #`)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from 'vue-i18n';\nimport { useAlert } from 'dashboard/composables';\nimport { useBranding } from 'shared/composables/useBranding';\nimport { useMessageFormatter } from 'shared/composables/useMessageFormatter';\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n hasConnectedAChannel: {\n type: Boolean,\n default: true,\n },\n});\n\nconst store = useStore();\nconst { t } = useI18n();\n\nconst { formatMessage } = useMessageFormatter();\nconst { replaceInstallationName } = useBranding();\n\nconst selectedChannelId = ref('');\nconst availableChannels = ref([]);\n\nconst uiFlags = computed(() => store.getters['integrations/getUIFlags']);\n\nconst errorDescription = computed(() => {\n return !props.hasConnectedAChannel\n ? t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.DESCRIPTION')\n : t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.EXPIRED');\n});\n\nconst formattedErrorMessage = computed(() => {\n return formatMessage(replaceInstallationName(errorDescription.value), false);\n});\n\nconst fetchChannels = async () => {\n try {\n availableChannels.value = await store.dispatch(\n 'integrations/listAllSlackChannels'\n );\n availableChannels.value.sort((c1, c2) => c1.name - c2.name);\n } catch {\n t('INTEGRATION_SETTINGS.SLACK.FAILED_TO_FETCH_CHANNELS');\n availableChannels.value = [];\n }\n};\n\nconst updateIntegration = async () => {\n try {\n await store.dispatch('integrations/updateSlack', {\n referenceId: selectedChannelId.value,\n });\n useAlert(t('INTEGRATION_SETTINGS.SLACK.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(error.message || 'INTEGRATION_SETTINGS.SLACK.UPDATE_ERROR');\n }\n};\n</script>\n\n<template>\n <div\n class=\"px-6 py-4 mb-4 outline outline-n-container outline-1 bg-n-alpha-3 rounded-md shadow\"\n >\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <div class=\"i-lucide-bell text-xl text-n-amber-11 mt-1\" />\n </div>\n <div class=\"ml-3\">\n <p class=\"mb-1 text-base font-semibold text-n-slate-12\">\n {{\n $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.ATTENTION_REQUIRED')\n }}\n </p>\n <div class=\"mt-2 text-sm text-n-slate-11 mb-3\">\n <p v-dompurify-html=\"formattedErrorMessage\" />\n </div>\n </div>\n </div>\n <div v-if=\"!hasConnectedAChannel\" class=\"mb-2 mt-1 ml-8\">\n <Button\n v-if=\"!availableChannels.length\"\n amber\n sm\n :is-loading=\"uiFlags.isFetchingSlackChannels\"\n @click=\"fetchChannels\"\n >\n {{ $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.BUTTON_TEXT') }}\n </Button>\n <div v-else class=\"inline-flex\">\n <select\n v-model=\"selectedChannelId\"\n class=\"h-8 py-1 mr-4 text-xs leading-4 border border-n-amber-10\"\n >\n <option value=\"\">\n {{ $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.OPTION_LABEL') }}\n </option>\n <option\n v-for=\"channel in availableChannels\"\n :key=\"channel.id\"\n :value=\"channel.id\"\n >\n #{{ channel.name }}\n </option>\n </select>\n <Button\n teal\n sm\n :is-loading=\"uiFlags.isUpdatingSlack\"\n @click=\"updateIntegration\"\n >\n {{ $t('INTEGRATION_SETTINGS.SLACK.SELECT_CHANNEL.UPDATE') }}\n </Button>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Slack/SlackIntegrationHelpText.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Webhooks/EditWebHook.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Webhooks/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Webhooks/NewWebHook.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Webhooks/WebhookForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getI18nKey('INTEGRATION_SETTINGS.WEBHOOK.FORM.SUBSCRIPTIONS.EVENTS',event)' dynamic key is used'","line":133,"column":18,"nodeType":"CallExpression","endLine":138,"endColumn":16}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, url, minLength } from '@vuelidate/validators';\nimport wootConstants from 'dashboard/constants/globals';\nimport { getI18nKey } from 'dashboard/routes/dashboard/settings/helper/settingsHelper';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nconst { EXAMPLE_WEBHOOK_URL } = wootConstants;\n\nconst SUPPORTED_WEBHOOK_EVENTS = [\n 'conversation_created',\n 'conversation_status_changed',\n 'conversation_updated',\n 'message_created',\n 'message_updated',\n 'webwidget_triggered',\n 'contact_created',\n 'contact_updated',\n 'conversation_typing_on',\n 'conversation_typing_off',\n];\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n value: {\n type: Object,\n default: () => ({}),\n },\n isSubmitting: {\n type: Boolean,\n default: false,\n },\n submitLabel: {\n type: String,\n required: true,\n },\n },\n emits: ['submit', 'cancel'],\n setup() {\n return { v$: useVuelidate() };\n },\n validations: {\n url: {\n required,\n minLength: minLength(7),\n url,\n },\n subscriptions: {\n required,\n },\n },\n data() {\n return {\n url: this.value.url || '',\n name: this.value.name || '',\n subscriptions: this.value.subscriptions || [],\n supportedWebhookEvents: SUPPORTED_WEBHOOK_EVENTS,\n };\n },\n computed: {\n webhookURLInputPlaceholder() {\n return this.$t(\n 'INTEGRATION_SETTINGS.WEBHOOK.FORM.END_POINT.PLACEHOLDER',\n {\n webhookExampleURL: EXAMPLE_WEBHOOK_URL,\n }\n );\n },\n webhookNameInputPlaceholder() {\n return this.$t('INTEGRATION_SETTINGS.WEBHOOK.FORM.NAME.PLACEHOLDER');\n },\n },\n methods: {\n onSubmit() {\n this.$emit('submit', {\n url: this.url,\n name: this.name,\n subscriptions: this.subscriptions,\n });\n },\n getI18nKey,\n },\n};\n</script>\n\n<template>\n <form class=\"flex flex-col w-full\" @submit.prevent=\"onSubmit\">\n <div class=\"w-full\">\n <label :class=\"{ error: v$.url.$error }\">\n {{ $t('INTEGRATION_SETTINGS.WEBHOOK.FORM.END_POINT.LABEL') }}\n <input\n v-model=\"url\"\n type=\"text\"\n name=\"url\"\n :placeholder=\"webhookURLInputPlaceholder\"\n @input=\"v$.url.$touch\"\n />\n <span v-if=\"v$.url.$error\" class=\"message\">\n {{ $t('INTEGRATION_SETTINGS.WEBHOOK.FORM.END_POINT.ERROR') }}\n </span>\n </label>\n <label>\n {{ $t('INTEGRATION_SETTINGS.WEBHOOK.FORM.NAME.LABEL') }}\n <input\n v-model=\"name\"\n type=\"text\"\n name=\"name\"\n :placeholder=\"webhookNameInputPlaceholder\"\n />\n </label>\n <label :class=\"{ error: v$.url.$error }\" class=\"mb-2\">\n {{ $t('INTEGRATION_SETTINGS.WEBHOOK.FORM.SUBSCRIPTIONS.LABEL') }}\n </label>\n <div class=\"flex flex-col gap-2.5 mb-4\">\n <div\n v-for=\"event in supportedWebhookEvents\"\n :key=\"event\"\n class=\"flex items-center\"\n >\n <input\n :id=\"event\"\n v-model=\"subscriptions\"\n type=\"checkbox\"\n :value=\"event\"\n name=\"subscriptions\"\n class=\"mr-2\"\n />\n <label :for=\"event\" class=\"text-sm\">\n {{\n `${$t(\n getI18nKey(\n 'INTEGRATION_SETTINGS.WEBHOOK.FORM.SUBSCRIPTIONS.EVENTS',\n event\n )\n )} (${event})`\n }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-row justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('INTEGRATION_SETTINGS.WEBHOOK.FORM.CANCEL')\"\n @click.prevent=\"$emit('cancel')\"\n />\n <NextButton\n type=\"submit\"\n :disabled=\"v$.$invalid || isSubmitting\"\n :is-loading=\"isSubmitting\"\n :label=\"submitLabel\"\n />\n </div>\n </form>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/Webhooks/WebhookRow.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'getI18nKey('INTEGRATION_SETTINGS.WEBHOOK.FORM.SUBSCRIPTIONS.EVENTS',event)' dynamic key is used'","line":26,"column":7,"nodeType":"CallExpression","endLine":31,"endColumn":8},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':\n ' is used","line":53,"column":69,"nodeType":null,"endLine":54,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1375],"text":"<i18n>\n{\n \"en\": {\n \":\\n \": \":\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport { getI18nKey } from 'dashboard/routes/dashboard/settings/helper/settingsHelper';\nimport ShowMore from 'dashboard/components/widgets/ShowMore.vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n webhook: {\n type: Object,\n required: true,\n },\n index: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['edit', 'delete']);\nconst { t } = useI18n();\nconst subscribedEvents = computed(() => {\n const { subscriptions } = props.webhook;\n return subscriptions\n .map(event =>\n t(\n getI18nKey(\n 'INTEGRATION_SETTINGS.WEBHOOK.FORM.SUBSCRIPTIONS.EVENTS',\n event\n )\n )\n )\n .join(', ');\n});\n</script>\n\n<template>\n <tr>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div class=\"flex gap-2 font-medium break-words text-n-slate-12\">\n <template v-if=\"webhook.name\">\n {{ webhook.name }}\n <span class=\"text-n-slate-11\">\n {{ webhook.url }}\n </span>\n </template>\n <template v-else>\n {{ webhook.url }}\n </template>\n </div>\n <div class=\"block mt-1 text-sm text-n-slate-11\">\n <span class=\"font-medium\">\n {{ $t('INTEGRATION_SETTINGS.WEBHOOK.SUBSCRIBED_EVENTS') }}{{$t(`:\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { getI18nKey } from 'dashboard/routes/dashboard/settings/helper/settingsHelper';\nimport ShowMore from 'dashboard/components/widgets/ShowMore.vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n webhook: {\n type: Object,\n required: true,\n },\n index: {\n type: Number,\n required: true,\n },\n});\n\nconst emit = defineEmits(['edit', 'delete']);\nconst { t } = useI18n();\nconst subscribedEvents = computed(() => {\n const { subscriptions } = props.webhook;\n return subscriptions\n .map(event =>\n t(\n getI18nKey(\n 'INTEGRATION_SETTINGS.WEBHOOK.FORM.SUBSCRIPTIONS.EVENTS',\n event\n )\n )\n )\n .join(', ');\n});\n</script>\n\n<template>\n <tr>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div class=\"flex gap-2 font-medium break-words text-n-slate-12\">\n <template v-if=\"webhook.name\">\n {{ webhook.name }}\n <span class=\"text-n-slate-11\">\n {{ webhook.url }}\n </span>\n </template>\n <template v-else>\n {{ webhook.url }}\n </template>\n </div>\n <div class=\"block mt-1 text-sm text-n-slate-11\">\n <span class=\"font-medium\">\n {{ $t('INTEGRATION_SETTINGS.WEBHOOK.SUBSCRIBED_EVENTS') }}:\n </span>\n <ShowMore :text=\"subscribedEvents\" :limit=\"60\" />\n </div>\n </td>\n <td class=\"py-4 min-w-xs\">\n <div class=\"flex justify-end gap-1\">\n <Button\n v-tooltip.top=\"$t('INTEGRATION_SETTINGS.WEBHOOK.EDIT.BUTTON_TEXT')\"\n icon=\"i-lucide-pen\"\n slate\n xs\n faded\n @click=\"emit('edit', webhook)\"\n />\n <Button\n v-tooltip.top=\"$t('INTEGRATION_SETTINGS.WEBHOOK.DELETE.BUTTON_TEXT')\"\n icon=\"i-lucide-trash-2\"\n xs\n ruby\n faded\n @click=\"emit('delete', webhook, index)\"\n />\n </div>\n </td>\n </tr>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/hookMixin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/integrations/specs/hookMixin.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/labels/AddLabel.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'errorMessage' dynamic key is used'","line":39,"column":14,"nodeType":"CallExpression","endLine":39,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport validations, { getLabelTitleErrorMessage } from './validations';\nimport { getRandomColor } from 'dashboard/helper/labelColor';\nimport { useVuelidate } from '@vuelidate/core';\n\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n prefillTitle: {\n type: String,\n default: '',\n },\n },\n emits: ['close'],\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n color: '#000',\n description: '',\n title: '',\n showOnSidebar: true,\n };\n },\n validations,\n computed: {\n ...mapGetters({\n uiFlags: 'labels/getUIFlags',\n }),\n labelTitleErrorMessage() {\n const errorMessage = getLabelTitleErrorMessage(this.v$);\n return this.$t(errorMessage);\n },\n },\n mounted() {\n this.color = getRandomColor();\n this.title = this.prefillTitle.toLowerCase();\n },\n methods: {\n onClose() {\n this.$emit('close');\n },\n async addLabel() {\n try {\n await this.$store.dispatch('labels/create', {\n color: this.color,\n description: this.description,\n title: this.title.toLowerCase(),\n show_on_sidebar: this.showOnSidebar,\n });\n useAlert(this.$t('LABEL_MGMT.ADD.API.SUCCESS_MESSAGE'));\n this.onClose();\n } catch (error) {\n const errorMessage =\n error.message || this.$t('LABEL_MGMT.ADD.API.ERROR_MESSAGE');\n useAlert(errorMessage);\n }\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header\n :header-title=\"$t('LABEL_MGMT.ADD.TITLE')\"\n :header-content=\"$t('LABEL_MGMT.ADD.DESC')\"\n />\n <form class=\"flex flex-wrap mx-0\" @submit.prevent=\"addLabel\">\n <woot-input\n v-model=\"title\"\n :class=\"{ error: v$.title.$error }\"\n class=\"w-full label-name--input\"\n :label=\"$t('LABEL_MGMT.FORM.NAME.LABEL')\"\n :placeholder=\"$t('LABEL_MGMT.FORM.NAME.PLACEHOLDER')\"\n :error=\"labelTitleErrorMessage\"\n data-testid=\"label-title\"\n @input=\"v$.title.$touch\"\n @blur=\"v$.title.$touch\"\n />\n\n <woot-input\n v-model=\"description\"\n :class=\"{ error: v$.description.$error }\"\n class=\"w-full\"\n :label=\"$t('LABEL_MGMT.FORM.DESCRIPTION.LABEL')\"\n :placeholder=\"$t('LABEL_MGMT.FORM.DESCRIPTION.PLACEHOLDER')\"\n data-testid=\"label-description\"\n @input=\"v$.description.$touch\"\n @blur=\"v$.description.$touch\"\n />\n\n <div class=\"w-full\">\n <label>\n {{ $t('LABEL_MGMT.FORM.COLOR.LABEL') }}\n <woot-color-picker v-model=\"color\" />\n </label>\n </div>\n <div class=\"flex items-center w-full gap-2\">\n <input v-model=\"showOnSidebar\" type=\"checkbox\" :value=\"true\" />\n <label for=\"conversation_creation\">\n {{ $t('LABEL_MGMT.FORM.SHOW_ON_SIDEBAR.LABEL') }}\n </label>\n </div>\n <div class=\"flex items-center justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('LABEL_MGMT.FORM.CANCEL')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n type=\"submit\"\n data-testid=\"label-submit\"\n :label=\"$t('LABEL_MGMT.FORM.CREATE')\"\n :disabled=\"v$.title.$invalid || uiFlags.isCreating\"\n :is-loading=\"uiFlags.isCreating\"\n />\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n// Label API supports only lowercase letters\n.label-name--input {\n ::v-deep {\n input {\n @apply lowercase;\n }\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/labels/EditLabel.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'errorMessage' dynamic key is used'","line":43,"column":14,"nodeType":"CallExpression","endLine":43,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport validations, { getLabelTitleErrorMessage } from './validations';\nimport { useVuelidate } from '@vuelidate/core';\n\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n NextButton,\n },\n props: {\n selectedResponse: {\n type: Object,\n default: () => {},\n },\n },\n emits: ['close'],\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n title: '',\n description: '',\n showOnSidebar: true,\n color: '',\n };\n },\n validations,\n computed: {\n ...mapGetters({\n uiFlags: 'labels/getUIFlags',\n }),\n pageTitle() {\n return `${this.$t('LABEL_MGMT.EDIT.TITLE')} - ${\n this.selectedResponse.title\n }`;\n },\n labelTitleErrorMessage() {\n const errorMessage = getLabelTitleErrorMessage(this.v$);\n return this.$t(errorMessage);\n },\n },\n mounted() {\n this.setFormValues();\n },\n methods: {\n onClose() {\n this.$emit('close');\n },\n setFormValues() {\n this.title = this.selectedResponse.title;\n this.description = this.selectedResponse.description;\n this.showOnSidebar = this.selectedResponse.show_on_sidebar;\n this.color = this.selectedResponse.color;\n },\n editLabel() {\n this.$store\n .dispatch('labels/update', {\n id: this.selectedResponse.id,\n color: this.color,\n description: this.description,\n title: this.title.toLowerCase(),\n show_on_sidebar: this.showOnSidebar,\n })\n .then(() => {\n useAlert(this.$t('LABEL_MGMT.EDIT.API.SUCCESS_MESSAGE'));\n setTimeout(() => this.onClose(), 10);\n })\n .catch(() => {\n useAlert(this.$t('LABEL_MGMT.EDIT.API.ERROR_MESSAGE'));\n });\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col h-auto overflow-auto\">\n <woot-modal-header :header-title=\"pageTitle\" />\n <form class=\"flex flex-wrap mx-0\" @submit.prevent=\"editLabel\">\n <woot-input\n v-model=\"title\"\n :class=\"{ error: v$.title.$error }\"\n class=\"w-full label-name--input\"\n :label=\"$t('LABEL_MGMT.FORM.NAME.LABEL')\"\n :placeholder=\"$t('LABEL_MGMT.FORM.NAME.PLACEHOLDER')\"\n :error=\"labelTitleErrorMessage\"\n @input=\"v$.title.$touch\"\n @blur=\"v$.title.$touch\"\n />\n <woot-input\n v-model=\"description\"\n :class=\"{ error: v$.description.$error }\"\n class=\"w-full\"\n :label=\"$t('LABEL_MGMT.FORM.DESCRIPTION.LABEL')\"\n :placeholder=\"$t('LABEL_MGMT.FORM.DESCRIPTION.PLACEHOLDER')\"\n @input=\"v$.description.$touch\"\n @blur=\"v$.description.$touch\"\n />\n\n <div class=\"w-full\">\n <label>\n {{ $t('LABEL_MGMT.FORM.COLOR.LABEL') }}\n <woot-color-picker v-model=\"color\" />\n </label>\n </div>\n <div class=\"flex items-center w-full gap-2\">\n <input v-model=\"showOnSidebar\" type=\"checkbox\" :value=\"true\" />\n <label for=\"conversation_creation\">\n {{ $t('LABEL_MGMT.FORM.SHOW_ON_SIDEBAR.LABEL') }}\n </label>\n </div>\n <div class=\"flex items-center justify-end w-full gap-2 px-0 py-2\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('LABEL_MGMT.FORM.CANCEL')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n type=\"submit\"\n :label=\"$t('LABEL_MGMT.FORM.EDIT')\"\n :disabled=\"v$.title.$invalid || uiFlags.isUpdating\"\n :is-loading=\"uiFlags.isUpdating\"\n />\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n// Label API supports only lowercase letters\n.label-name--input {\n ::v-deep {\n input {\n @apply lowercase;\n }\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/labels/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/labels/specs/validations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/labels/validations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/MacroEditor.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MACROS.ACTIONS.${type.label}`' dynamic key is used'","line":28,"column":12,"nodeType":"CallExpression","endLine":28,"endColumn":45}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed, watch, provide } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useI18n } from 'vue-i18n';\nimport { useStore, useStoreGetters } from 'dashboard/composables/store';\nimport MacroForm from './MacroForm.vue';\nimport { MACRO_ACTION_TYPES } from './constants';\nimport { useAlert } from 'dashboard/composables';\nimport actionQueryGenerator from 'dashboard/helper/actionQueryGenerator.js';\nimport { useMacros } from 'dashboard/composables/useMacros';\n\nconst store = useStore();\nconst getters = useStoreGetters();\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst { t } = useI18n();\n\nconst { getMacroDropdownValues } = useMacros();\n\nconst macro = ref(null);\nconst mode = ref('CREATE');\n\nconst macroActionTypes = computed(() => {\n return MACRO_ACTION_TYPES.map(type => ({\n ...type,\n label: t(`MACROS.ACTIONS.${type.label}`),\n }));\n});\n\nprovide('macroActionTypes', macroActionTypes);\n\nconst uiFlags = computed(() => getters['macros/getUIFlags'].value);\nconst macroId = computed(() => route.params.macroId);\n\nconst fetchDropdownData = () => {\n store.dispatch('agents/get');\n store.dispatch('teams/get');\n store.dispatch('labels/get');\n};\n\nconst formatMacro = macroData => {\n const formattedActions = macroData.actions.map(action => {\n let actionParams = [];\n if (action.action_params.length) {\n const inputType = macroActionTypes.value.find(\n item => item.key === action.action_name\n ).inputType;\n if (inputType === 'multi_select' || inputType === 'search_select') {\n actionParams = getMacroDropdownValues(action.action_name).filter(item =>\n [...action.action_params].includes(item.id)\n );\n } else if (inputType === 'team_message') {\n actionParams = {\n team_ids: getMacroDropdownValues(action.action_name).filter(item =>\n [...action.action_params[0].team_ids].includes(item.id)\n ),\n message: action.action_params[0].message,\n };\n } else actionParams = [...action.action_params];\n }\n return {\n ...action,\n action_params: actionParams,\n };\n });\n return {\n ...macroData,\n actions: formattedActions,\n };\n};\n\nconst manifestMacro = async () => {\n await store.dispatch('macros/getSingleMacro', macroId.value);\n const singleMacro = store.getters['macros/getMacro'](macroId.value);\n macro.value = formatMacro(singleMacro);\n};\n\nconst fetchMacro = () => {\n mode.value = 'EDIT';\n manifestMacro();\n};\n\nconst initNewMacro = () => {\n mode.value = 'CREATE';\n macro.value = {\n name: '',\n actions: [\n {\n action_name: 'assign_team',\n action_params: [],\n },\n ],\n visibility: 'global',\n };\n};\n\nwatch(\n () => route,\n () => {\n fetchDropdownData();\n if (route.params.macroId) {\n fetchMacro();\n } else {\n initNewMacro();\n }\n },\n { immediate: true, deep: true }\n);\n\nconst saveMacro = async macroData => {\n try {\n const action = mode.value === 'EDIT' ? 'macros/update' : 'macros/create';\n const successMessage =\n mode.value === 'EDIT'\n ? t('MACROS.EDIT.API.SUCCESS_MESSAGE')\n : t('MACROS.ADD.API.SUCCESS_MESSAGE');\n let serializedMacro = JSON.parse(JSON.stringify(macroData));\n serializedMacro.actions = actionQueryGenerator(serializedMacro.actions);\n await store.dispatch(action, serializedMacro);\n useAlert(successMessage);\n router.push({ name: 'macros_wrapper' });\n } catch (error) {\n useAlert(t('MACROS.ERROR'));\n }\n};\n</script>\n\n<template>\n <div class=\"flex flex-col flex-1 h-full overflow-auto\">\n <woot-loading-state\n v-if=\"uiFlags.isFetchingItem\"\n :message=\"t('MACROS.EDITOR.LOADING')\"\n />\n <MacroForm\n v-if=\"macro && !uiFlags.isFetchingItem\"\n :macro-data=\"macro\"\n @update:macro-data=\"macro = $event\"\n @submit=\"saveMacro\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/MacroForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/MacroNode.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`MACROS.ERRORS.${props.errorKey}`' dynamic key is used'","line":36,"column":10,"nodeType":"CallExpression","endLine":36,"endColumn":46}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, inject, defineModel } from 'vue';\nimport { useMacros } from 'dashboard/composables/useMacros';\nimport { useI18n } from 'vue-i18n';\nimport ActionInput from 'dashboard/components/widgets/AutomationActionInput.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n singleNode: {\n type: Boolean,\n default: false,\n },\n errorKey: {\n type: String,\n default: '',\n },\n fileName: {\n type: String,\n default: '',\n },\n});\n\ndefineEmits(['resetAction', 'deleteNode']);\n\nconst { t } = useI18n();\nconst macroActionTypes = inject('macroActionTypes');\nconst { getMacroDropdownValues } = useMacros();\n\nconst actionData = defineModel({\n type: Object,\n required: true,\n});\n\nconst errorMessage = computed(() => {\n if (!props.errorKey) return '';\n return t(`MACROS.ERRORS.${props.errorKey}`);\n});\n\nconst showActionInput = computed(() => {\n if (\n actionData.value.action_name === 'send_email_to_team' ||\n actionData.value.action_name === 'send_message'\n )\n return false;\n const type = macroActionTypes.value.find(\n action => action.key === actionData.value.action_name\n ).inputType;\n return !!type;\n});\n\nconst dropdownValues = () => {\n return getMacroDropdownValues(actionData.value.action_name);\n};\n</script>\n\n<template>\n <div class=\"relative flex items-start w-full min-w-0 basis-full\">\n <NextButton\n v-if=\"!singleNode\"\n ghost\n sm\n slate\n icon=\"i-lucide-menu\"\n class=\"absolute cursor-move ltr:-left-10 rtl:-right-10 ltr:mr-2 rtl:ml-2 macros__node-drag-handle\"\n />\n <div\n class=\"flex-grow p-2 ltr:mr-2 rtl:ml-2 rounded-md shadow-sm outline outline-1 outline-n-weak\"\n :class=\"\n errorKey\n ? 'animate-shake bg-n-ruby-8/20 outline-n-ruby-5 dark:outline-n-ruby-5'\n : 'bg-n-background dark:bg-n-solid-1'\n \"\n >\n <ActionInput\n v-model=\"actionData\"\n :action-types=\"macroActionTypes\"\n :dropdown-values=\"dropdownValues()\"\n :show-action-input=\"showActionInput\"\n :show-remove-button=\"false\"\n is-macro\n :error-message=\"errorMessage\"\n :initial-file-name=\"fileName\"\n @reset-action=\"$emit('resetAction')\"\n />\n </div>\n <NextButton\n v-if=\"!singleNode\"\n v-tooltip=\"$t('MACROS.EDITOR.DELETE_BTN_TOOLTIP')\"\n icon=\"i-lucide-trash-2\"\n sm\n faded\n ruby\n class=\"flex-shrink-0\"\n @click=\"$emit('deleteNode')\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/MacroNodes.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/MacroProperties.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/MacrosTableRow.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'i18nKey' dynamic key is used'","line":32,"column":10,"nodeType":"CallExpression","endLine":32,"endColumn":20},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '--' is used","line":44,"column":19,"nodeType":null,"endLine":44,"endColumn":21,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1205],"text":"<i18n>\n{\n \"en\": {\n \"--\": \"--\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n macro: {\n type: Object,\n required: true,\n },\n});\ndefineEmits(['delete']);\nconst { t } = useI18n();\n\nconst createdByName = computed(() => {\n const createdBy = props.macro.created_by;\n return createdBy.available_name ?? createdBy.email ?? '';\n});\n\nconst updatedByName = computed(() => {\n const updatedBy = props.macro.updated_by;\n return updatedBy.available_name ?? updatedBy.email ?? '';\n});\n\nconst visibilityLabel = computed(() => {\n const i18nKey =\n props.macro.visibility === 'global'\n ? 'MACROS.EDITOR.VISIBILITY.GLOBAL.LABEL'\n : 'MACROS.EDITOR.VISIBILITY.PERSONAL.LABEL';\n return t(i18nKey);\n});\n</script>\n\n<template>\n <tr>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4 truncate\">{{ macro.name }}</td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div v-if=\"macro.created_by\" class=\"flex items-center\">\n <Avatar :name=\"createdByName\" :size=\"24\" rounded-full />\n <span class=\"mx-2\">{{ createdByName }}</span>\n </div>\n <div v-else>{{$t('--')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '--' is used","line":51,"column":19,"nodeType":null,"endLine":51,"endColumn":21,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1476],"text":"<i18n>\n{\n \"en\": {\n \"--\": \"--\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n macro: {\n type: Object,\n required: true,\n },\n});\ndefineEmits(['delete']);\nconst { t } = useI18n();\n\nconst createdByName = computed(() => {\n const createdBy = props.macro.created_by;\n return createdBy.available_name ?? createdBy.email ?? '';\n});\n\nconst updatedByName = computed(() => {\n const updatedBy = props.macro.updated_by;\n return updatedBy.available_name ?? updatedBy.email ?? '';\n});\n\nconst visibilityLabel = computed(() => {\n const i18nKey =\n props.macro.visibility === 'global'\n ? 'MACROS.EDITOR.VISIBILITY.GLOBAL.LABEL'\n : 'MACROS.EDITOR.VISIBILITY.PERSONAL.LABEL';\n return t(i18nKey);\n});\n</script>\n\n<template>\n <tr>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4 truncate\">{{ macro.name }}</td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div v-if=\"macro.created_by\" class=\"flex items-center\">\n <Avatar :name=\"createdByName\" :size=\"24\" rounded-full />\n <span class=\"mx-2\">{{ createdByName }}</span>\n </div>\n <div v-else>--</div>\n </td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div v-if=\"macro.updated_by\" class=\"flex items-center\">\n <Avatar :name=\"updatedByName\" :size=\"24\" rounded-full />\n <span class=\"mx-2\">{{ updatedByName }}</span>\n </div>\n <div v-else>{{$t('--')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport Avatar from 'next/avatar/Avatar.vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from 'dashboard/components-next/button/Button.vue';\n\nconst props = defineProps({\n macro: {\n type: Object,\n required: true,\n },\n});\ndefineEmits(['delete']);\nconst { t } = useI18n();\n\nconst createdByName = computed(() => {\n const createdBy = props.macro.created_by;\n return createdBy.available_name ?? createdBy.email ?? '';\n});\n\nconst updatedByName = computed(() => {\n const updatedBy = props.macro.updated_by;\n return updatedBy.available_name ?? updatedBy.email ?? '';\n});\n\nconst visibilityLabel = computed(() => {\n const i18nKey =\n props.macro.visibility === 'global'\n ? 'MACROS.EDITOR.VISIBILITY.GLOBAL.LABEL'\n : 'MACROS.EDITOR.VISIBILITY.PERSONAL.LABEL';\n return t(i18nKey);\n});\n</script>\n\n<template>\n <tr>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4 truncate\">{{ macro.name }}</td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div v-if=\"macro.created_by\" class=\"flex items-center\">\n <Avatar :name=\"createdByName\" :size=\"24\" rounded-full />\n <span class=\"mx-2\">{{ createdByName }}</span>\n </div>\n <div v-else>--</div>\n </td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">\n <div v-if=\"macro.updated_by\" class=\"flex items-center\">\n <Avatar :name=\"updatedByName\" :size=\"24\" rounded-full />\n <span class=\"mx-2\">{{ updatedByName }}</span>\n </div>\n <div v-else>--</div>\n </td>\n <td class=\"py-4 ltr:pr-4 rtl:pl-4\">{{ visibilityLabel }}</td>\n <td class=\"py-4 flex justify-end gap-1\">\n <router-link :to=\"{ name: 'macros_edit', params: { macroId: macro.id } }\">\n <Button\n v-tooltip.top=\"$t('MACROS.EDIT.TOOLTIP')\"\n icon=\"i-lucide-pen\"\n slate\n xs\n faded\n />\n </router-link>\n <Button\n v-tooltip.top=\"$t('MACROS.DELETE.TOOLTIP')\"\n icon=\"i-lucide-trash-2\"\n xs\n ruby\n faded\n @click=\"$emit('delete')\"\n />\n </td>\n </tr>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/macroHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/macros/macros.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/AccessToken.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/AudioAlertCondition.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/AudioAlertEvent.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`PROFILE_SETTINGS.FORM.AUDIO_NOTIFICATIONS_SECTION.ALERT_TYPES.${option.label.toUpperCase()}`' dynamic key is used'","line":92,"column":13,"nodeType":"CallExpression","endLine":94,"endColumn":14},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'alertDescription' dynamic key is used'","line":99,"column":12,"nodeType":"CallExpression","endLine":99,"endColumn":32}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport CheckBox from 'v3/components/Form/CheckBox.vue';\nimport { ALERT_EVENTS, EVENT_TYPES } from './constants';\n\nconst props = defineProps({\n label: {\n type: String,\n default: '',\n },\n value: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['update']);\n\nconst alertEvents = ALERT_EVENTS;\nconst alertEventValues = Object.values(EVENT_TYPES);\n\nconst selectedValue = computed({\n get: () => {\n // maintain backward compatibility\n if (props.value === 'none') return [];\n if (props.value === 'mine') return [EVENT_TYPES.ASSIGNED];\n if (props.value === 'all') return [...alertEventValues];\n\n const validValues = props.value\n .split('+')\n .filter(value => alertEventValues.includes(value));\n\n return [...new Set(validValues)];\n },\n set: value => {\n const sortedValues = value.filter(Boolean).sort();\n const uniqueValues = [...new Set(sortedValues)];\n\n if (uniqueValues.length === 0) {\n emit('update', 'none');\n return;\n }\n\n emit('update', uniqueValues.join('+'));\n },\n});\n\nconst setValue = (isChecked, value) => {\n let updatedValue = selectedValue.value;\n if (isChecked) {\n updatedValue.push(value);\n } else {\n updatedValue = updatedValue.filter(item => item !== value);\n }\n\n selectedValue.value = updatedValue;\n};\n\nconst alertDescription = computed(() => {\n const base =\n 'PROFILE_SETTINGS.FORM.AUDIO_NOTIFICATIONS_SECTION.ALERT_COMBINATIONS.';\n\n if (props.value === '' || props.value === 'none') {\n return base + 'NONE';\n }\n\n return base + selectedValue.value.join('+').toUpperCase();\n});\n</script>\n\n<template>\n <div>\n <label class=\"pb-1 text-sm font-medium leading-6 text-n-slate-12\">\n {{ label }}\n </label>\n <div class=\"grid gap-3 mt-2\">\n <div\n v-for=\"option in alertEvents\"\n :key=\"option.value\"\n class=\"flex items-center gap-2\"\n >\n <CheckBox\n :id=\"`checkbox-${option.value}`\"\n :is-checked=\"selectedValue.includes(option.value)\"\n @update=\"(_val, isChecked) => setValue(isChecked, option.value)\"\n />\n <label\n :for=\"`checkbox-${option.value}`\"\n class=\"text-sm text-n-slate-12 font-normal\"\n >\n {{\n $t(\n `PROFILE_SETTINGS.FORM.AUDIO_NOTIFICATIONS_SECTION.ALERT_TYPES.${option.label.toUpperCase()}`\n )\n }}\n </label>\n </div>\n <div class=\"text-n-slate-11 text-sm font-medium mt-2\">\n {{ $t(alertDescription) }}\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/AudioAlertTone.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/AudioNotifications.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKeyPrefix}.CONDITIONS.CONDITION_ONE`' dynamic key is used'","line":38,"column":14,"nodeType":"CallExpression","endLine":38,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKeyPrefix}.CONDITIONS.CONDITION_TWO`' dynamic key is used'","line":44,"column":14,"nodeType":"CallExpression","endLine":44,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKeyPrefix}.DEFAULT_TONE.TITLE`' dynamic key is used'","line":96,"column":15,"nodeType":"CallExpression","endLine":96,"endColumn":56},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKeyPrefix}.ALERT_TYPE.TITLE`' dynamic key is used'","line":101,"column":15,"nodeType":"CallExpression","endLine":101,"endColumn":54},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${i18nKeyPrefix}.CONDITIONS.TITLE`' dynamic key is used'","line":108,"column":15,"nodeType":"CallExpression","endLine":108,"endColumn":54}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useAlert } from 'dashboard/composables';\nimport { useUISettings } from 'dashboard/composables/useUISettings';\nimport AudioAlertTone from './AudioAlertTone.vue';\nimport AudioAlertEvent from './AudioAlertEvent.vue';\nimport AudioAlertCondition from './AudioAlertCondition.vue';\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useStore } from 'dashboard/composables/store';\nconst store = useStore();\nimport { useI18n } from 'vue-i18n';\nimport camelcaseKeys from 'camelcase-keys';\nimport { initializeAudioAlerts } from 'dashboard/helper/scriptHelpers';\nimport { useStoreGetters } from 'dashboard/composables/store';\n\nconst getters = useStoreGetters();\nconst currentUser = computed(() => getters.getCurrentUser.value);\n\nconst { uiSettings, updateUISettings } = useUISettings();\n\nconst { t } = useI18n();\nconst audioAlert = ref('');\nconst playAudioWhenTabIsInactive = ref(false);\nconst alertIfUnreadConversationExist = ref(false);\nconst alertTone = ref('ding');\nconst audioAlertConditions = ref([]);\nconst i18nKeyPrefix = 'PROFILE_SETTINGS.FORM.AUDIO_NOTIFICATIONS_SECTION';\n\nconst initializeNotificationUISettings = newUISettings => {\n const updatedUISettings = camelcaseKeys(newUISettings);\n\n audioAlert.value = updatedUISettings.enableAudioAlerts;\n playAudioWhenTabIsInactive.value = !updatedUISettings.alwaysPlayAudioAlert;\n alertIfUnreadConversationExist.value =\n updatedUISettings.alertIfUnreadAssignedConversationExist;\n audioAlertConditions.value = [\n {\n id: 'audio1',\n label: t(`${i18nKeyPrefix}.CONDITIONS.CONDITION_ONE`),\n model: playAudioWhenTabIsInactive.value,\n value: 'tab_is_inactive',\n },\n {\n id: 'audio2',\n label: t(`${i18nKeyPrefix}.CONDITIONS.CONDITION_TWO`),\n model: alertIfUnreadConversationExist.value,\n value: 'conversations_are_read',\n },\n ];\n alertTone.value = updatedUISettings.notificationTone || 'ding';\n};\n\nwatch(\n uiSettings,\n value => {\n initializeNotificationUISettings(value);\n },\n { immediate: true }\n);\n\nconst handleAudioConfigChange = value => {\n updateUISettings(value);\n initializeAudioAlerts(currentUser.value);\n useAlert(t('PROFILE_SETTINGS.FORM.API.UPDATE_SUCCESS'));\n};\n\nonMounted(() => {\n store.dispatch('userNotificationSettings/get');\n});\n\nconst handAudioAlertChange = value => {\n audioAlert.value = value;\n handleAudioConfigChange({\n enable_audio_alerts: value,\n });\n};\nconst handleAudioAlertConditions = (id, value) => {\n if (id === 'tab_is_inactive') {\n handleAudioConfigChange({\n always_play_audio_alert: !value,\n });\n } else if (id === 'conversations_are_read') {\n handleAudioConfigChange({\n alert_if_unread_assigned_conversation_exist: value,\n });\n }\n};\nconst handleAudioToneChange = value => {\n handleAudioConfigChange({ notification_tone: value });\n};\n</script>\n\n<template>\n <div id=\"profile-settings-notifications\" class=\"flex flex-col gap-6\">\n <AudioAlertTone\n :value=\"alertTone\"\n :label=\"$t(`${i18nKeyPrefix}.DEFAULT_TONE.TITLE`)\"\n @change=\"handleAudioToneChange\"\n />\n\n <AudioAlertEvent\n :label=\"$t(`${i18nKeyPrefix}.ALERT_TYPE.TITLE`)\"\n :value=\"audioAlert\"\n @update=\"handAudioAlertChange\"\n />\n\n <AudioAlertCondition\n :items=\"audioAlertConditions\"\n :label=\"$t(`${i18nKeyPrefix}.CONDITIONS.TITLE`)\"\n @change=\"handleAudioAlertConditions\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/ChangePassword.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/FontSize.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/HotKeyCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/MessageSignature.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/MfaManagementActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/MfaSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/MfaSettingsCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/MfaSetupWizard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/MfaStatusCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/NotificationCheckBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/NotificationPreferences.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'notification.label' dynamic key is used'","line":206,"column":18,"nodeType":"CallExpression","endLine":206,"endColumn":40},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'notification.label' dynamic key is used'","line":244,"column":13,"nodeType":"CallExpression","endLine":244,"endColumn":35},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'notification.label' dynamic key is used'","line":268,"column":13,"nodeType":"CallExpression","endLine":268,"endColumn":35}],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":119,"column":27,"nodeType":"MemberExpression","messageId":"unexpected","endLine":119,"endColumn":38,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { useAlert } from 'dashboard/composables';\nimport TableHeaderCell from 'dashboard/components/widgets/TableHeaderCell.vue';\nimport CheckBox from 'v3/components/Form/CheckBox.vue';\nimport {\n hasPushPermissions,\n requestPushPermissions,\n verifyServiceWorkerExistence,\n} from 'dashboard/helper/pushHelper.js';\nimport { FEATURE_FLAGS } from 'dashboard/featureFlags';\nimport ToggleSwitch from 'dashboard/components-next/switch/Switch.vue';\nimport { NOTIFICATION_TYPES } from './constants';\n\nexport default {\n components: {\n TableHeaderCell,\n ToggleSwitch,\n CheckBox,\n },\n data() {\n return {\n selectedEmailFlags: [],\n selectedPushFlags: [],\n enableAudioAlerts: false,\n hasEnabledPushPermissions: false,\n notificationTypes: NOTIFICATION_TYPES,\n };\n },\n computed: {\n ...mapGetters({\n accountId: 'getCurrentAccountId',\n emailFlags: 'userNotificationSettings/getSelectedEmailFlags',\n pushFlags: 'userNotificationSettings/getSelectedPushFlags',\n isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',\n }),\n hasPushAPISupport() {\n return !!('Notification' in window);\n },\n isSLAEnabled() {\n return this.isFeatureEnabledonAccount(this.accountId, FEATURE_FLAGS.SLA);\n },\n filteredNotificationTypes() {\n return this.notificationTypes.filter(notification =>\n this.isSLAEnabled\n ? true\n : ![\n 'sla_missed_first_response',\n 'sla_missed_next_response',\n 'sla_missed_resolution',\n ].includes(notification.value)\n );\n },\n },\n watch: {\n emailFlags(value) {\n this.selectedEmailFlags = value;\n },\n pushFlags(value) {\n this.selectedPushFlags = value;\n },\n },\n mounted() {\n if (hasPushPermissions()) {\n this.getPushSubscription();\n }\n this.$store.dispatch('userNotificationSettings/get');\n },\n methods: {\n checkFlagStatus(type, flagType) {\n const selectedFlags =\n type === 'email' ? this.selectedEmailFlags : this.selectedPushFlags;\n return selectedFlags.includes(`${type}_${flagType}`);\n },\n onRegistrationSuccess() {\n this.hasEnabledPushPermissions = true;\n },\n onRequestPermissions(value) {\n if (value) {\n // Enable / re-enable push notifications\n requestPushPermissions({\n onSuccess: this.onRegistrationSuccess,\n });\n } else {\n // Disable push notifications\n this.disablePushPermissions();\n }\n },\n disablePushPermissions() {\n verifyServiceWorkerExistence(registration =>\n registration.pushManager\n .getSubscription()\n .then(subscription => {\n if (subscription) {\n return subscription.unsubscribe();\n }\n return null;\n })\n .finally(() => {\n this.hasEnabledPushPermissions = false;\n })\n .catch(() => {\n // error\n })\n );\n },\n getPushSubscription() {\n verifyServiceWorkerExistence(registration =>\n registration.pushManager\n .getSubscription()\n .then(subscription => {\n if (!subscription) {\n this.hasEnabledPushPermissions = false;\n } else {\n this.hasEnabledPushPermissions = true;\n }\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error))\n );\n },\n async updateNotificationSettings() {\n try {\n this.$store.dispatch('userNotificationSettings/update', {\n selectedEmailFlags: this.selectedEmailFlags,\n selectedPushFlags: this.selectedPushFlags,\n });\n useAlert(this.$t('PROFILE_SETTINGS.FORM.API.UPDATE_SUCCESS'));\n } catch (error) {\n useAlert(this.$t('PROFILE_SETTINGS.FORM.API.UPDATE_ERROR'));\n }\n },\n handleInput(type, id) {\n if (type === 'email') {\n this.handleEmailInput(id);\n } else {\n this.handlePushInput(id);\n }\n },\n handleEmailInput(id) {\n this.selectedEmailFlags = this.toggleInput(this.selectedEmailFlags, id);\n this.updateNotificationSettings();\n },\n handlePushInput(id) {\n this.selectedPushFlags = this.toggleInput(this.selectedPushFlags, id);\n this.updateNotificationSettings();\n },\n toggleInput(selected, current) {\n if (selected.includes(current)) {\n const newSelectedFlags = selected.filter(flag => flag !== current);\n return newSelectedFlags;\n }\n return [...selected, current];\n },\n },\n};\n</script>\n\n<template>\n <div id=\"profile-settings-notifications\" class=\"flex flex-col gap-6\">\n <!-- Layout for desktop devices -->\n <div class=\"hidden sm:block\">\n <div\n class=\"grid content-center h-12 grid-cols-12 gap-4 py-0 rounded-t-xl\"\n >\n <TableHeaderCell\n :span=\"7\"\n label=\"`${$t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPE_TITLE')}`\"\n >\n <span class=\"text-sm font-normal normal-case text-n-slate-11\">\n {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPE_TITLE') }}\n </span>\n </TableHeaderCell>\n <TableHeaderCell\n :span=\"2\"\n label=\"`${$t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.EMAIL')}`\"\n >\n <span class=\"text-sm font-medium normal-case text-n-slate-12\">\n {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.EMAIL') }}\n </span>\n </TableHeaderCell>\n <TableHeaderCell\n :span=\"3\"\n label=\"`${$t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.PUSH')}`\"\n >\n <div class=\"flex items-center justify-between gap-1\">\n <span\n class=\"text-sm font-medium normal-case text-n-slate-12 whitespace-nowrap\"\n >\n {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.PUSH') }}\n </span>\n </div>\n </TableHeaderCell>\n </div>\n <div\n v-for=\"(notification, index) in filteredNotificationTypes\"\n :key=\"index\"\n >\n <div\n class=\"grid items-center content-center h-12 grid-cols-12 gap-4 py-0 rounded-t-xl\"\n >\n <div\n class=\"flex flex-row items-start gap-2 col-span-7 px-0 py-2 text-sm tracking-[0.5] rtl:text-right\"\n >\n <span class=\"text-sm text-n-slate-12\">\n {{ $t(notification.label) }}\n </span>\n </div>\n <div\n v-for=\"(type, typeIndex) in ['email', 'push']\"\n :key=\"typeIndex\"\n class=\"flex items-start gap-2 px-0 text-sm tracking-[0.5] text-left rtl:text-right\"\n :class=\"`col-span-${type === 'push' ? 3 : 2}`\"\n >\n <CheckBox\n :value=\"`${type}_${notification.value}`\"\n :is-checked=\"\n checkFlagStatus(type, notification.value, selectedPushFlags)\n \"\n @update=\"id => handleInput(type, id)\"\n />\n </div>\n </div>\n </div>\n </div>\n <!-- Layout for mobile devices -->\n <div class=\"flex flex-col gap-6 sm:hidden\">\n <span class=\"text-sm font-medium normal-case text-n-slate-12\">\n {{ $t('PROFILE_SETTINGS.FORM.EMAIL_NOTIFICATIONS_SECTION.TITLE') }}\n </span>\n <div class=\"flex flex-col gap-4\">\n <div\n v-for=\"(notification, index) in filteredNotificationTypes\"\n :key=\"index\"\n class=\"flex flex-row items-start gap-2\"\n >\n <CheckBox\n :id=\"`email_${notification.value}`\"\n :value=\"`email_${notification.value}`\"\n :is-checked=\"checkFlagStatus('email', notification.value)\"\n @update=\"handleEmailInput\"\n />\n <span class=\"text-sm text-n-slate-12\">{{\n $t(notification.label)\n }}</span>\n </div>\n </div>\n\n <div class=\"flex items-center justify-start gap-2\">\n <span class=\"text-sm font-medium normal-case text-n-slate-12\">\n {{ $t('PROFILE_SETTINGS.FORM.PUSH_NOTIFICATIONS_SECTION.TITLE') }}\n </span>\n </div>\n\n <div class=\"flex flex-col gap-4\">\n <div\n v-for=\"(notification, index) in filteredNotificationTypes\"\n :key=\"index\"\n class=\"flex flex-row items-start gap-2\"\n >\n <CheckBox\n :id=\"`push_${notification.value}`\"\n :value=\"`push_${notification.value}`\"\n :is-checked=\"checkFlagStatus('push', notification.value)\"\n @update=\"handlePushInput\"\n />\n <span class=\"text-sm text-n-slate-12\">{{\n $t(notification.label)\n }}</span>\n </div>\n </div>\n </div>\n\n <div\n class=\"flex items-center justify-between w-full gap-2 p-4 border border-solid border-n-weak rounded-xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <fluent-icon\n icon=\"alert\"\n class=\"flex-shrink-0 text-n-slate-12\"\n size=\"18\"\n />\n <span class=\"text-sm text-n-slate-12\">\n {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.BROWSER_PERMISSION') }}\n </span>\n </div>\n <ToggleSwitch\n v-model=\"hasEnabledPushPermissions\"\n @change=\"onRequestPermissions\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/UserBasicDetails.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/UserLanguageSelect.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/UserProfilePicture.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/Wrapper.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/profile/profile.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/AgentReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/AgentReportsIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/AgentReportsShow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/BotReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/CsatResponses.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/FrequentQuestionsIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/InboxReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/InboxReportsIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/InboxReportsShow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/LabelReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/LabelReportsIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/LabelReportsShow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/LiveReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/ReportContainer.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`REPORT.METRICS.${key}.NAME`' dynamic key is used'","line":58,"column":15,"nodeType":"CallExpression","endLine":58,"endColumn":52},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`REPORT.METRICS.${key}.DESC`' dynamic key is used'","line":60,"column":15,"nodeType":"CallExpression","endLine":60,"endColumn":52},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'metric.TOOLTIP_TEXT' dynamic key is used'","line":129,"column":24,"nodeType":"CallExpression","endLine":133,"endColumn":19}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { useReportMetrics } from 'dashboard/composables/useReportMetrics';\nimport { GROUP_BY_FILTER, METRIC_CHART } from './constants';\nimport fromUnixTime from 'date-fns/fromUnixTime';\nimport format from 'date-fns/format';\nimport { formatTime } from '@chatwoot/utils';\nimport ChartStats from './components/ChartElements/ChartStats.vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\n\nexport default {\n components: { ChartStats, BarChart },\n props: {\n groupBy: {\n type: Object,\n default: () => ({}),\n },\n accountSummaryKey: {\n type: String,\n default: 'getAccountSummary',\n },\n summaryFetchingKey: {\n type: String,\n default: 'getAccountSummaryFetchingStatus',\n },\n reportKeys: {\n type: Object,\n default: () => ({\n CONVERSATIONS: 'conversations_count',\n INCOMING_MESSAGES: 'incoming_messages_count',\n OUTGOING_MESSAGES: 'outgoing_messages_count',\n FIRST_RESPONSE_TIME: 'avg_first_response_time',\n RESOLUTION_TIME: 'avg_resolution_time',\n RESOLUTION_COUNT: 'resolutions_count',\n REPLY_TIME: 'reply_time',\n }),\n },\n },\n setup(props) {\n const { calculateTrend, isAverageMetricType } = useReportMetrics(\n props.accountSummaryKey\n );\n return { calculateTrend, isAverageMetricType };\n },\n computed: {\n ...mapGetters({\n accountReport: 'getAccountReports',\n }),\n metrics() {\n const reportKeys = Object.keys(this.reportKeys);\n const infoText = {\n FIRST_RESPONSE_TIME: this.$t(\n `REPORT.METRICS.FIRST_RESPONSE_TIME.INFO_TEXT`\n ),\n RESOLUTION_TIME: this.$t(`REPORT.METRICS.RESOLUTION_TIME.INFO_TEXT`),\n };\n return reportKeys.map(key => ({\n NAME: this.$t(`REPORT.METRICS.${key}.NAME`),\n KEY: this.reportKeys[key],\n DESC: this.$t(`REPORT.METRICS.${key}.DESC`),\n INFO_TEXT: infoText[key],\n TOOLTIP_TEXT: `REPORT.METRICS.${key}.TOOLTIP_TEXT`,\n trend: this.calculateTrend(this.reportKeys[key]),\n }));\n },\n },\n methods: {\n getCollection(metric) {\n if (!this.accountReport.data[metric.KEY]) {\n return {};\n }\n const data = this.accountReport.data[metric.KEY];\n const labels = data.map(element => {\n if (this.groupBy?.period === GROUP_BY_FILTER[2].period) {\n let week_date = new Date(fromUnixTime(element.timestamp));\n const first_day = week_date.getDate() - week_date.getDay();\n const last_day = first_day + 6;\n const week_first_date = new Date(week_date.setDate(first_day));\n const week_last_date = new Date(week_date.setDate(last_day));\n return `${format(week_first_date, 'dd-MMM')} - ${format(\n week_last_date,\n 'dd-MMM'\n )}`;\n }\n if (this.groupBy?.period === GROUP_BY_FILTER[3].period) {\n return format(fromUnixTime(element.timestamp), 'MMM-yyyy');\n }\n if (this.groupBy?.period === GROUP_BY_FILTER[4].period) {\n return format(fromUnixTime(element.timestamp), 'yyyy');\n }\n return format(fromUnixTime(element.timestamp), 'dd-MMM');\n });\n const datasets = METRIC_CHART[metric.KEY].datasets.map(dataset => {\n switch (dataset.type) {\n case 'bar':\n return {\n ...dataset,\n yAxisID: 'y',\n label: metric.NAME,\n data: data.map(element => element.value),\n };\n case 'line':\n return {\n ...dataset,\n yAxisID: 'y',\n label: this.metrics[0].NAME,\n data: data.map(element => element.count),\n };\n default:\n return dataset;\n }\n });\n return {\n labels,\n datasets,\n };\n },\n getChartOptions(metric) {\n const options = {\n scales: METRIC_CHART[metric.KEY].scales,\n };\n\n // Only add tooltip configuration for time-based metrics\n if (this.isAverageMetricType(metric.KEY)) {\n options.plugins = {\n tooltip: {\n callbacks: {\n label: ({ raw, dataIndex }) => {\n return this.$t(metric.TOOLTIP_TEXT, {\n metricValue: formatTime(raw || 0),\n conversationCount:\n this.accountReport.data[metric.KEY][dataIndex]?.count || 0,\n });\n },\n },\n },\n };\n }\n\n return options;\n },\n },\n};\n</script>\n\n<template>\n <div\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 px-6 py-5 shadow outline-1 outline outline-n-container rounded-xl bg-n-solid-2\"\n >\n <div\n v-for=\"metric in metrics\"\n :key=\"metric.KEY\"\n class=\"p-4 mb-3 rounded-md\"\n >\n <ChartStats\n :metric=\"metric\"\n :account-summary-key=\"accountSummaryKey\"\n :summary-fetching-key=\"summaryFetchingKey\"\n />\n <div class=\"mt-4 h-72\">\n <woot-loading-state\n v-if=\"accountReport.isFetching[metric.KEY]\"\n class=\"text-xs\"\n :message=\"$t('REPORT.LOADING_CHART')\"\n />\n <div v-else class=\"flex items-center justify-center h-72\">\n <BarChart\n v-if=\"accountReport.data[metric.KEY].length\"\n :collection=\"getCollection(metric)\"\n :chart-options=\"getChartOptions(metric)\"\n />\n <span v-else class=\"text-sm text-n-slate-10\">\n {{ $t('REPORT.NO_ENOUGH_DATA') }}\n </span>\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/SLAReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/TeamReports.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/TeamReportsIndex.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/TeamReportsShow.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/AgentLiveReportContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/BotMetrics.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/ChartElements/ChartStats.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '%\n ' is used","line":75,"column":43,"nodeType":null,"endLine":76,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2216],"text":"<i18n>\n{\n \"en\": {\n \"%\\n \": \"%\\n \"\n }\n}\n</i18n>\n\n<script setup>\nimport { useReportMetrics } from 'dashboard/composables/useReportMetrics';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\nimport { STATUS } from 'dashboard/store/constants';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n metric: {\n type: Object,\n default: () => ({}),\n },\n accountSummaryKey: {\n type: String,\n default: 'getAccountSummary',\n },\n summaryFetchingKey: {\n type: String,\n default: 'getAccountSummaryFetchingStatus',\n },\n});\n\nconst { t } = useI18n();\n\nconst { calculateTrend, displayMetric, isAverageMetricType, fetchingStatus } =\n useReportMetrics(props.accountSummaryKey, props.summaryFetchingKey);\n\nconst trendColor = (value, key) => {\n if (isAverageMetricType(key)) {\n return value > 0\n ? 'border-n-ruby-9 text-n-ruby-9'\n : 'border-n-teal-10 text-n-teal-10';\n }\n return value < 0\n ? 'border-n-ruby-9 text-n-ruby-9'\n : 'border-n-teal-10 text-n-teal-10';\n};\n</script>\n\n<template>\n <div class=\"text-n-slate-11\">\n <span class=\"text-sm\">\n {{ metric.NAME }}\n </span>\n <div class=\"flex items-end text-n-slate-12\">\n <div v-if=\"fetchingStatus === STATUS.FETCHING\">\n <Spinner />\n </div>\n <div\n v-else-if=\"fetchingStatus === STATUS.FAILED\"\n class=\"text-n-ruby-10 text-sm\"\n >\n {{ t('REPORT.SUMMARY_FETCHING_FAILED') }}\n </div>\n <div\n v-else-if=\"fetchingStatus === STATUS.FINISHED\"\n class=\"text-xl font-medium\"\n >\n {{ displayMetric(metric.KEY) }}\n </div>\n <div\n v-if=\"metric.trend && fetchingStatus === STATUS.FINISHED\"\n class=\"text-xs ml-4 flex items-center mb-0.5\"\n >\n <div\n v-if=\"metric.trend < 0\"\n class=\"h-0 w-0 border-x-4 medium border-x-transparent border-t-[8px] mr-1\"\n :class=\"trendColor(metric.trend, metric.KEY)\"\n />\n <div\n v-else\n class=\"h-0 w-0 border-x-4 medium border-x-transparent border-b-[8px] mr-1\"\n :class=\"trendColor(metric.trend, metric.KEY)\"\n />\n <span class=\"font-medium\" :class=\"trendColor(metric.trend, metric.KEY)\">\n {{ calculateTrend(metric.KEY) }}{{$t(`%\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { useReportMetrics } from 'dashboard/composables/useReportMetrics';\nimport Spinner from 'dashboard/components-next/spinner/Spinner.vue';\nimport { STATUS } from 'dashboard/store/constants';\nimport { useI18n } from 'vue-i18n';\n\nconst props = defineProps({\n metric: {\n type: Object,\n default: () => ({}),\n },\n accountSummaryKey: {\n type: String,\n default: 'getAccountSummary',\n },\n summaryFetchingKey: {\n type: String,\n default: 'getAccountSummaryFetchingStatus',\n },\n});\n\nconst { t } = useI18n();\n\nconst { calculateTrend, displayMetric, isAverageMetricType, fetchingStatus } =\n useReportMetrics(props.accountSummaryKey, props.summaryFetchingKey);\n\nconst trendColor = (value, key) => {\n if (isAverageMetricType(key)) {\n return value > 0\n ? 'border-n-ruby-9 text-n-ruby-9'\n : 'border-n-teal-10 text-n-teal-10';\n }\n return value < 0\n ? 'border-n-ruby-9 text-n-ruby-9'\n : 'border-n-teal-10 text-n-teal-10';\n};\n</script>\n\n<template>\n <div class=\"text-n-slate-11\">\n <span class=\"text-sm\">\n {{ metric.NAME }}\n </span>\n <div class=\"flex items-end text-n-slate-12\">\n <div v-if=\"fetchingStatus === STATUS.FETCHING\">\n <Spinner />\n </div>\n <div\n v-else-if=\"fetchingStatus === STATUS.FAILED\"\n class=\"text-n-ruby-10 text-sm\"\n >\n {{ t('REPORT.SUMMARY_FETCHING_FAILED') }}\n </div>\n <div\n v-else-if=\"fetchingStatus === STATUS.FINISHED\"\n class=\"text-xl font-medium\"\n >\n {{ displayMetric(metric.KEY) }}\n </div>\n <div\n v-if=\"metric.trend && fetchingStatus === STATUS.FINISHED\"\n class=\"text-xs ml-4 flex items-center mb-0.5\"\n >\n <div\n v-if=\"metric.trend < 0\"\n class=\"h-0 w-0 border-x-4 medium border-x-transparent border-t-[8px] mr-1\"\n :class=\"trendColor(metric.trend, metric.KEY)\"\n />\n <div\n v-else\n class=\"h-0 w-0 border-x-4 medium border-x-transparent border-b-[8px] mr-1\"\n :class=\"trendColor(metric.trend, metric.KEY)\"\n />\n <span class=\"font-medium\" :class=\"trendColor(metric.trend, metric.KEY)\">\n {{ calculateTrend(metric.KEY) }}%\n </span>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/ConversationCell.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/CsatMetrics.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/CsatTable.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/FilterSelector.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/Agents.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/DateGroupBy.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'option.translationKey' dynamic key is used'","line":26,"column":18,"nodeType":"CallExpression","endLine":26,"endColumn":48},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'this.selectedOption.translationKey' dynamic key is used'","line":35,"column":20,"nodeType":"CallExpression","endLine":35,"endColumn":63}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { GROUP_BY_OPTIONS } from '../../constants';\n\nexport default {\n name: 'ReportsFiltersDateGroupBy',\n props: {\n validGroupOptions: {\n type: Array,\n default: () => [GROUP_BY_OPTIONS.DAY],\n },\n selectedOption: {\n type: Object,\n default: () => GROUP_BY_OPTIONS.DAY,\n },\n },\n emits: ['onGroupingChange'],\n data() {\n return {\n currentSelectedFilter: null,\n };\n },\n computed: {\n translatedOptions() {\n return this.validGroupOptions.map(option => ({\n ...option,\n groupBy: this.$t(option.translationKey),\n }));\n },\n },\n watch: {\n selectedOption: {\n handler() {\n this.currentSelectedFilter = {\n ...this.selectedOption,\n groupBy: this.$t(this.selectedOption.translationKey),\n };\n },\n immediate: true,\n },\n },\n methods: {\n changeFilterSelection(selectedFilter) {\n this.groupByOptions = this.$emit('onGroupingChange', selectedFilter);\n },\n },\n};\n</script>\n\n<template>\n <div class=\"multiselect-wrap--small\">\n <p aria-hidden=\"true\" class=\"hidden\">\n {{ $t('REPORT.GROUP_BY_FILTER_DROPDOWN_LABEL') }}\n </p>\n <multiselect\n v-model=\"currentSelectedFilter\"\n class=\"no-margin\"\n track-by=\"id\"\n label=\"groupBy\"\n :placeholder=\"$t('REPORT.GROUP_BY_FILTER_DROPDOWN_LABEL')\"\n :options=\"translatedOptions\"\n :allow-empty=\"false\"\n :show-labels=\"false\"\n @select=\"changeFilterSelection\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/DateRange.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'option.translationKey' dynamic key is used'","line":13,"column":11,"nodeType":"CallExpression","endLine":13,"endColumn":35}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { DATE_RANGE_OPTIONS } from '../../constants';\n\nconst emit = defineEmits(['onRangeChange']);\n\nconst { t } = useI18n();\n\nconst options = computed(() =>\n Object.values(DATE_RANGE_OPTIONS).map(option => ({\n ...option,\n name: t(option.translationKey),\n }))\n);\n\nconst selectedId = ref(Object.values(DATE_RANGE_OPTIONS)[0].id);\n\nconst selectedOption = computed({\n get() {\n return options.value.find(o => o.id === selectedId.value);\n },\n set(val) {\n selectedId.value = val.id;\n },\n});\n\nconst updateRange = range => {\n selectedOption.value = range;\n emit('onRangeChange', range);\n};\n</script>\n\n<template>\n <div class=\"multiselect-wrap--small\">\n <multiselect\n v-model=\"selectedOption\"\n class=\"no-margin\"\n track-by=\"id\"\n label=\"name\"\n :placeholder=\"$t('FORMS.MULTISELECT.SELECT_ONE')\"\n selected-label\n :select-label=\"$t('FORMS.MULTISELECT.ENTER_TO_SELECT')\"\n deselect-label=\"\"\n :options=\"options\"\n :searchable=\"false\"\n :allow-empty=\"false\"\n @select=\"updateRange\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/Inboxes.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/Labels.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/Ratings.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'option.translationKey' dynamic key is used'","line":10,"column":14,"nodeType":"CallExpression","endLine":10,"endColumn":44}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { CSAT_RATINGS } from 'shared/constants/messages';\n\nexport default {\n name: 'ReportFiltersRatings',\n emits: ['ratingFilterSelection'],\n data() {\n const translatedOptions = CSAT_RATINGS.reverse().map(option => ({\n ...option,\n label: this.$t(option.translationKey),\n }));\n\n return {\n selectedOption: null,\n options: translatedOptions,\n };\n },\n methods: {\n handleInput(selectedRating) {\n this.$emit('ratingFilterSelection', selectedRating);\n },\n },\n};\n</script>\n\n<template>\n <div class=\"multiselect-wrap--small\">\n <multiselect\n v-model=\"selectedOption\"\n class=\"no-margin\"\n :option-height=\"24\"\n :placeholder=\"$t('FORMS.MULTISELECT.SELECT_ONE')\"\n :options=\"options\"\n :show-labels=\"false\"\n track-by=\"value\"\n label=\"label\"\n @update:model-value=\"handleInput\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/Teams.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/ActiveFilterChip.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/AddFilterChip.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${placeholderI18nKey}.${item.type.toUpperCase()}`' dynamic key is used'","line":91,"column":19,"nodeType":"CallExpression","endLine":91,"endColumn":73}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport FilterButton from 'dashboard/components/ui/Dropdown/DropdownButton.vue';\nimport FilterListDropdown from 'dashboard/components/ui/Dropdown/DropdownList.vue';\nimport FilterListItemButton from 'dashboard/components/ui/Dropdown/DropdownListItemButton.vue';\nimport FilterDropdownEmptyState from 'dashboard/components/ui/Dropdown/DropdownEmptyState.vue';\n\nimport { ref } from 'vue';\n\ndefineProps({\n name: {\n type: String,\n required: true,\n },\n menuOption: {\n type: Array,\n default: () => [],\n },\n showMenu: {\n type: Boolean,\n default: false,\n },\n placeholderI18nKey: {\n type: String,\n default: '',\n },\n enableSearch: {\n type: Boolean,\n default: true,\n },\n emptyStateMessage: {\n type: String,\n default: '',\n },\n});\n\nconst emit = defineEmits(['toggleDropdown', 'addFilter', 'closeDropdown']);\n\nconst hoveredItemId = ref(null);\n\nconst showSubMenu = id => {\n hoveredItemId.value = id;\n};\n\nconst hideSubMenu = () => {\n hoveredItemId.value = null;\n};\n\nconst isHovered = id => hoveredItemId.value === id;\n\nconst toggleDropdown = () => emit('toggleDropdown');\nconst addFilter = item => {\n emit('addFilter', item);\n hideSubMenu();\n};\nconst closeDropdown = () => {\n hideSubMenu();\n emit('closeDropdown');\n};\n</script>\n\n<template>\n <FilterButton\n :button-text=\"name\"\n icon=\"i-lucide-filter\"\n @click=\"toggleDropdown\"\n >\n <!-- Dropdown with search and sub-dropdown -->\n <template v-if=\"showMenu\" #dropdown>\n <FilterListDropdown\n v-on-clickaway=\"closeDropdown\"\n class=\"left-0 md:right-0 top-10\"\n >\n <template #listItem>\n <FilterDropdownEmptyState\n v-if=\"!menuOption.length\"\n :message=\"emptyStateMessage\"\n />\n <FilterListItemButton\n v-for=\"item in menuOption\"\n :key=\"item.id\"\n :button-text=\"item.name\"\n @mouseenter=\"showSubMenu(item.id)\"\n @mouseleave=\"hideSubMenu\"\n @focus=\"showSubMenu(item.id)\"\n >\n <!-- Submenu with search and clear button -->\n <template v-if=\"item.options && isHovered(item.id)\" #dropdown>\n <FilterListDropdown\n :list-items=\"item.options\"\n :input-placeholder=\"\n $t(`${placeholderI18nKey}.${item.type.toUpperCase()}`)\n \"\n :enable-search=\"enableSearch\"\n class=\"flex flex-col w-[216px] overflow-y-auto top-0 left-36\"\n @select=\"addFilter\"\n />\n </template>\n </FilterListItemButton>\n </template>\n </FilterListDropdown>\n </template>\n </FilterButton>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/ReportFilters.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/ReportHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/ReportMetricCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/ReportsWrapper.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAFilter.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`SLA_REPORTS.DROPDOWN.INPUT_PLACEHOLDER.${filter.type.toUpperCase()}`' dynamic key is used'","line":166,"column":11,"nodeType":"CallExpression","endLine":168,"endColumn":12}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport {\n buildFilterList,\n getActiveFilter,\n getFilterType,\n} from './helpers/SLAFilterHelpers';\nimport FilterButton from 'dashboard/components/ui/Dropdown/DropdownButton.vue';\nimport ActiveFilterChip from '../Filters/v3/ActiveFilterChip.vue';\nimport AddFilterChip from '../Filters/v3/AddFilterChip.vue';\n\nexport default {\n components: {\n FilterButton,\n ActiveFilterChip,\n AddFilterChip,\n },\n emits: ['filterChange'],\n data() {\n return {\n showDropdownMenu: false,\n showSubDropdownMenu: false,\n activeFilterType: '',\n appliedFilters: {\n assigned_agent_id: null,\n inbox_id: null,\n team_id: null,\n sla_policy_id: null,\n label_list: null,\n },\n };\n },\n computed: {\n ...mapGetters({\n agents: 'agents/getAgents',\n inboxes: 'inboxes/getInboxes',\n teams: 'teams/getTeams',\n labels: 'labels/getLabels',\n sla: 'sla/getSLA',\n }),\n filterListMenuItems() {\n const filterTypes = [\n { id: '1', name: this.$t('SLA_REPORTS.DROPDOWN.SLA'), type: 'sla' },\n {\n id: '2',\n name: this.$t('SLA_REPORTS.DROPDOWN.INBOXES'),\n type: 'inboxes',\n },\n {\n id: '3',\n name: this.$t('SLA_REPORTS.DROPDOWN.AGENTS'),\n type: 'agents',\n },\n { id: '4', name: this.$t('SLA_REPORTS.DROPDOWN.TEAMS'), type: 'teams' },\n {\n id: '5',\n name: this.$t('SLA_REPORTS.DROPDOWN.LABELS'),\n type: 'labels',\n },\n ];\n // Filter out the active filters from the filter list\n // We only want to show the filters that are not already applied\n // In the add filter dropdown\n const activeFilters = Object.keys(this.appliedFilters).filter(\n key => this.appliedFilters[key]\n );\n const activeFilterTypes = activeFilters.map(key =>\n getFilterType(key, 'keyToType')\n );\n return filterTypes\n .filter(({ type }) => !activeFilterTypes.includes(type))\n .map(({ id, name, type }) => ({\n id,\n name,\n type,\n options: buildFilterList(this[type], type),\n }));\n },\n activeFilters() {\n // Get the active filters from the applied filters\n // and return the filter name, type and options\n const activeKey = Object.keys(this.appliedFilters).filter(\n key => this.appliedFilters[key]\n );\n return activeKey.map(key => {\n const filterType = getFilterType(key, 'keyToType');\n const item = getActiveFilter(\n this[filterType],\n filterType,\n this.appliedFilters[key]\n );\n return {\n id: item.id,\n name: filterType === 'labels' ? item.title : item.name,\n type: filterType,\n options: buildFilterList(this[filterType], filterType),\n };\n });\n },\n hasActiveFilters() {\n return Object.values(this.appliedFilters).some(value => value !== null);\n },\n isAllFilterSelected() {\n return !this.filterListMenuItems.length;\n },\n },\n methods: {\n addFilter(item) {\n const { type, id, name } = item;\n const filterKey = getFilterType(type, 'typeToKey');\n this.appliedFilters[filterKey] = type === 'labels' ? name : id;\n this.$emit('filterChange', this.appliedFilters);\n this.resetDropdown();\n },\n removeFilter(type) {\n const filterKey = getFilterType(type, 'typeToKey');\n this.appliedFilters[filterKey] = null;\n this.$emit('filterChange', this.appliedFilters);\n },\n clearAllFilters() {\n this.appliedFilters = {\n assigned_agent_id: null,\n inbox_id: null,\n team_id: null,\n sla_policy_id: null,\n label_list: null,\n };\n this.$emit('filterChange', this.appliedFilters);\n this.resetDropdown();\n },\n showDropdown() {\n this.showSubDropdownMenu = false;\n this.showDropdownMenu = !this.showDropdownMenu;\n },\n closeDropdown() {\n this.showDropdownMenu = false;\n },\n openActiveFilterDropdown(filterType) {\n this.closeDropdown();\n this.activeFilterType = filterType;\n this.showSubDropdownMenu = !this.showSubDropdownMenu;\n },\n closeActiveFilterDropdown() {\n this.activeFilterType = '';\n this.showSubDropdownMenu = false;\n },\n resetDropdown() {\n this.closeDropdown();\n this.closeActiveFilterDropdown();\n },\n },\n};\n</script>\n\n<template>\n <div\n class=\"flex flex-col flex-wrap items-start gap-2 md:items-center md:flex-nowrap md:flex-row\"\n >\n <!-- Active filters section -->\n <div v-if=\"hasActiveFilters\" class=\"flex flex-wrap gap-2 md:flex-nowrap\">\n <ActiveFilterChip\n v-for=\"filter in activeFilters\"\n v-bind=\"filter\"\n :key=\"filter.type\"\n :placeholder=\"\n $t(\n `SLA_REPORTS.DROPDOWN.INPUT_PLACEHOLDER.${filter.type.toUpperCase()}`\n )\n \"\n :active-filter-type=\"activeFilterType\"\n :show-menu=\"showSubDropdownMenu\"\n enable-search\n @toggle-dropdown=\"openActiveFilterDropdown\"\n @close-dropdown=\"closeActiveFilterDropdown\"\n @add-filter=\"addFilter\"\n @remove-filter=\"removeFilter\"\n />\n </div>\n <!-- Dividing line between Active filters and Add filter button -->\n <div\n v-if=\"hasActiveFilters && !isAllFilterSelected\"\n class=\"w-full h-px border md:w-px md:h-5 border-n-weak\"\n />\n <!-- Add filter and clear filter button -->\n <div class=\"flex items-center gap-2\">\n <AddFilterChip\n v-if=\"!isAllFilterSelected\"\n placeholder-i18n-key=\"SLA_REPORTS.DROPDOWN.INPUT_PLACEHOLDER\"\n :name=\"$t('SLA_REPORTS.DROPDOWN.ADD_FIlTER')\"\n :menu-option=\"filterListMenuItems\"\n :show-menu=\"showDropdownMenu\"\n :empty-state-message=\"$t('SLA_REPORTS.DROPDOWN.NO_FILTER')\"\n @toggle-dropdown=\"showDropdown\"\n @close-dropdown=\"closeDropdown\"\n @add-filter=\"addFilter\"\n />\n\n <!-- Dividing line between Add filter and Clear all filter button -->\n <div v-if=\"hasActiveFilters\" class=\"w-px h-5 border border-n-weak\" />\n <!-- Clear all filter button -->\n <FilterButton\n v-if=\"hasActiveFilters\"\n :button-text=\"$t('SLA_REPORTS.DROPDOWN.CLEAR_ALL')\"\n @click=\"clearAllFilters\"\n />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAMetricCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAMetrics.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAReportFilters.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAReportItem.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ' --- ' is used","line":70,"column":44,"nodeType":null,"endLine":70,"endColumn":49,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2072],"text":"<i18n>\n{\n \"en\": {\n \" --- \": \" --- \"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport UserAvatarWithName from 'dashboard/components/widgets/UserAvatarWithName.vue';\nimport CardLabels from 'dashboard/components/widgets/conversation/conversationCardComponents/CardLabels.vue';\nimport SLAViewDetails from './SLAViewDetails.vue';\nconst props = defineProps({\n slaName: {\n type: String,\n required: true,\n },\n conversationId: {\n type: Number,\n required: true,\n },\n conversation: {\n type: Object,\n required: true,\n },\n slaEvents: {\n type: Array,\n default: () => [],\n },\n});\n\nconst conversationLabels = computed(() => {\n return props.conversation.labels\n ? props.conversation.labels.split(',').map(item => item.trim())\n : [];\n});\n\nconst routerParams = computed(() => ({\n name: 'inbox_conversation',\n params: { conversation_id: props.conversationId },\n}));\n</script>\n\n<template>\n <div\n class=\"grid items-center content-center w-full h-16 grid-cols-12 gap-4 px-6 py-0 border-b last:border-b-0 last:rounded-b-xl border-n-weak\"\n >\n <div\n class=\"flex items-center gap-2 col-span-6 px-0 py-2 text-sm tracking-[0.5] text-n-slate-12 rtl:text-right\"\n >\n <router-link :to=\"routerParams\" class=\"text-n-slate-12 hover:underline\">\n {{ `#${conversationId}` }}\n </router-link>\n <span class=\"text-n-slate-11\">\n {{ $t('SLA_REPORTS.WITH') }}\n </span>\n <span class=\"capitalize truncate text-n-slate-12\">{{\n conversation.contact.name\n }}</span>\n <CardLabels\n v-if=\"conversationLabels.length\"\n class=\"w-[60%]\"\n :conversation-id=\"conversationId\"\n :conversation-labels=\"conversationLabels\"\n />\n </div>\n <div\n class=\"flex items-center capitalize py-2 px-0 text-sm tracking-[0.5] text-n-slate-12 text-left rtl:text-right col-span-2\"\n >\n {{ slaName }}\n </div>\n <div class=\"flex items-center col-span-2 gap-2\">\n <UserAvatarWithName\n v-if=\"conversation.assignee\"\n :user=\"conversation.assignee\"\n />\n <span v-else class=\"text-n-slate-11\">{{$t(' --- ')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport UserAvatarWithName from 'dashboard/components/widgets/UserAvatarWithName.vue';\nimport CardLabels from 'dashboard/components/widgets/conversation/conversationCardComponents/CardLabels.vue';\nimport SLAViewDetails from './SLAViewDetails.vue';\nconst props = defineProps({\n slaName: {\n type: String,\n required: true,\n },\n conversationId: {\n type: Number,\n required: true,\n },\n conversation: {\n type: Object,\n required: true,\n },\n slaEvents: {\n type: Array,\n default: () => [],\n },\n});\n\nconst conversationLabels = computed(() => {\n return props.conversation.labels\n ? props.conversation.labels.split(',').map(item => item.trim())\n : [];\n});\n\nconst routerParams = computed(() => ({\n name: 'inbox_conversation',\n params: { conversation_id: props.conversationId },\n}));\n</script>\n\n<template>\n <div\n class=\"grid items-center content-center w-full h-16 grid-cols-12 gap-4 px-6 py-0 border-b last:border-b-0 last:rounded-b-xl border-n-weak\"\n >\n <div\n class=\"flex items-center gap-2 col-span-6 px-0 py-2 text-sm tracking-[0.5] text-n-slate-12 rtl:text-right\"\n >\n <router-link :to=\"routerParams\" class=\"text-n-slate-12 hover:underline\">\n {{ `#${conversationId}` }}\n </router-link>\n <span class=\"text-n-slate-11\">\n {{ $t('SLA_REPORTS.WITH') }}\n </span>\n <span class=\"capitalize truncate text-n-slate-12\">{{\n conversation.contact.name\n }}</span>\n <CardLabels\n v-if=\"conversationLabels.length\"\n class=\"w-[60%]\"\n :conversation-id=\"conversationId\"\n :conversation-labels=\"conversationLabels\"\n />\n </div>\n <div\n class=\"flex items-center capitalize py-2 px-0 text-sm tracking-[0.5] text-n-slate-12 text-left rtl:text-right col-span-2\"\n >\n {{ slaName }}\n </div>\n <div class=\"flex items-center col-span-2 gap-2\">\n <UserAvatarWithName\n v-if=\"conversation.assignee\"\n :user=\"conversation.assignee\"\n />\n <span v-else class=\"text-n-slate-11\"> --- </span>\n </div>\n <SLAViewDetails :sla-events=\"slaEvents\" />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLATable.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAViewDetails.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/helpers/SLAFilterHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/StatsLiveReportsContainer.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`OVERVIEW_REPORTS.AGENT_STATUS.${OVERVIEW_METRICS[key]}`' dynamic key is used'","line":32,"column":24,"nodeType":"CallExpression","endLine":34,"endColumn":6},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${accounti18nKey}.${OVERVIEW_METRICS[key]}`' dynamic key is used'","line":42,"column":24,"nodeType":"CallExpression","endLine":42,"endColumn":71},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${accounti18nKey}.HEADER`' dynamic key is used'","line":85,"column":18,"nodeType":"CallExpression","endLine":85,"endColumn":47},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${accounti18nKey}.LOADING_MESSAGE`' dynamic key is used'","line":87,"column":27,"nodeType":"CallExpression","endLine":87,"endColumn":65}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed, onMounted, ref } from 'vue';\nimport { OVERVIEW_METRICS } from '../constants';\nimport { useToggle } from '@vueuse/core';\n\nimport MetricCard from './overview/MetricCard.vue';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport { useLiveRefresh } from 'dashboard/composables/useLiveRefresh';\nimport DropdownMenu from 'dashboard/components-next/dropdown-menu/DropdownMenu.vue';\nimport Button from 'dashboard/components-next/button/Button.vue';\nimport { useI18n } from 'vue-i18n';\nconst { t } = useI18n();\n\nconst uiFlags = useMapGetter('getOverviewUIFlags');\nconst agentStatus = useMapGetter('agents/getAgentStatus');\nconst accountConversationMetric = useMapGetter('getAccountConversationMetric');\nconst store = useStore();\n\nconst accounti18nKey = 'OVERVIEW_REPORTS.ACCOUNT_CONVERSATIONS';\nconst teams = useMapGetter('teams/getTeams');\n\nconst teamMenuList = computed(() => {\n return [\n { label: t('OVERVIEW_REPORTS.TEAM_CONVERSATIONS.ALL_TEAMS'), value: null },\n ...teams.value.map(team => ({ label: team.name, value: team.id })),\n ];\n});\n\nconst agentStatusMetrics = computed(() => {\n let metric = {};\n Object.keys(agentStatus.value).forEach(key => {\n const metricName = t(\n `OVERVIEW_REPORTS.AGENT_STATUS.${OVERVIEW_METRICS[key]}`\n );\n metric[metricName] = agentStatus.value[key];\n });\n return metric;\n});\nconst conversationMetrics = computed(() => {\n let metric = {};\n Object.keys(accountConversationMetric.value).forEach(key => {\n const metricName = t(`${accounti18nKey}.${OVERVIEW_METRICS[key]}`);\n metric[metricName] = accountConversationMetric.value[key];\n });\n return metric;\n});\n\nconst selectedTeam = ref(null);\nconst selectedTeamLabel = computed(() => {\n const team =\n teamMenuList.value.find(\n menuItem => menuItem.value === selectedTeam.value\n ) || {};\n return team.label;\n});\nconst fetchData = () => {\n const params = {};\n if (selectedTeam.value) {\n params.team_id = selectedTeam.value;\n }\n store.dispatch('fetchAccountConversationMetric', params);\n};\n\nconst { startRefetching } = useLiveRefresh(fetchData);\nconst [showDropdown, toggleDropdown] = useToggle();\n\nconst handleAction = ({ value }) => {\n toggleDropdown(false);\n selectedTeam.value = value;\n fetchData();\n};\n\nonMounted(() => {\n fetchData();\n startRefetching();\n});\n</script>\n\n<template>\n <div class=\"flex flex-col items-center md:flex-row gap-4\">\n <div\n class=\"flex-1 w-full max-w-full md:w-[65%] md:max-w-[65%] conversation-metric\"\n >\n <MetricCard\n :header=\"t(`${accounti18nKey}.HEADER`)\"\n :is-loading=\"uiFlags.isFetchingAccountConversationMetric\"\n :loading-message=\"t(`${accounti18nKey}.LOADING_MESSAGE`)\"\n >\n <template v-if=\"teams.length\" #control>\n <div\n v-on-clickaway=\"() => toggleDropdown(false)\"\n class=\"relative flex items-center group z-50\"\n >\n <Button\n sm\n slate\n faded\n :label=\"selectedTeamLabel\"\n class=\"capitalize rounded-md group-hover:bg-n-alpha-2\"\n @click=\"toggleDropdown()\"\n />\n <DropdownMenu\n v-if=\"showDropdown\"\n :menu-items=\"teamMenuList\"\n class=\"mt-1 ltr:right-0 rtl:left-0 xl:ltr:right-0 xl:rtl:left-0 top-full\"\n label-class=\"capitalize\"\n @action=\"handleAction($event)\"\n />\n </div>\n </template>\n <div\n v-for=\"(metric, name, index) in conversationMetrics\"\n :key=\"index\"\n class=\"flex-1 min-w-0 pb-2\"\n >\n <h3 class=\"text-base text-n-slate-11\">\n {{ name }}\n </h3>\n <p class=\"text-n-slate-12 text-3xl mb-0 mt-1\">\n {{ metric }}\n </p>\n </div>\n </MetricCard>\n </div>\n <div class=\"flex-1 w-full max-w-full md:w-[35%] md:max-w-[35%]\">\n <MetricCard :header=\"$t('OVERVIEW_REPORTS.AGENT_STATUS.HEADER')\">\n <div\n v-for=\"(metric, name, index) in agentStatusMetrics\"\n :key=\"index\"\n class=\"flex-1 min-w-0 pb-2\"\n >\n <h3 class=\"text-base text-n-slate-11\">\n {{ name }}\n </h3>\n <p class=\"text-n-slate-12 text-3xl mb-0 mt-1\">\n {{ metric }}\n </p>\n </div>\n </MetricCard>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SummaryReportLink.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/SummaryReports.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`SUMMARY_REPORTS.${props.type.toUpperCase()}`' dynamic key is used'","line":64,"column":13,"nodeType":"CallExpression","endLine":64,"endColumn":61}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport ReportFilterSelector from './FilterSelector.vue';\nimport { formatTime } from '@chatwoot/utils';\nimport { useStore, useMapGetter } from 'dashboard/composables/store';\nimport Table from 'dashboard/components/table/Table.vue';\nimport { generateFileName } from 'dashboard/helper/downloadHelper';\nimport {\n useVueTable,\n createColumnHelper,\n getCoreRowModel,\n} from '@tanstack/vue-table';\nimport { computed, onMounted, ref, h } from 'vue';\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'account',\n },\n getterKey: {\n type: String,\n default: '',\n },\n actionKey: {\n type: String,\n default: '',\n },\n summaryKey: {\n type: String,\n default: '',\n },\n fetchItemsKey: {\n type: String,\n required: true,\n },\n});\n\nconst store = useStore();\n\nconst from = ref(0);\nconst to = ref(0);\nconst businessHours = ref(false);\nimport { useI18n } from 'vue-i18n';\nimport SummaryReportLink from './SummaryReportLink.vue';\n\nconst rowItems = useMapGetter([props.getterKey]) || [];\nconst reportMetrics = useMapGetter([props.summaryKey]) || [];\n\nconst getMetrics = id =>\n reportMetrics.value.find(metrics => metrics.id === Number(id)) || {};\nconst columnHelper = createColumnHelper();\nconst { t } = useI18n();\n\nconst defaulSpanRender = cellProps =>\n h(\n 'span',\n {\n class: cellProps.getValue() ? '' : 'text-n-slate-12',\n },\n cellProps.getValue()\n );\n\nconst columns = computed(() => [\n columnHelper.accessor('name', {\n header: t(`SUMMARY_REPORTS.${props.type.toUpperCase()}`),\n width: 300,\n cell: cellProps => h(SummaryReportLink, cellProps),\n }),\n columnHelper.accessor('conversationsCount', {\n header: t('SUMMARY_REPORTS.CONVERSATIONS'),\n width: 200,\n cell: defaulSpanRender,\n }),\n columnHelper.accessor('avgFirstResponseTime', {\n header: t('SUMMARY_REPORTS.AVG_FIRST_RESPONSE_TIME'),\n width: 200,\n cell: defaulSpanRender,\n }),\n columnHelper.accessor('avgResolutionTime', {\n header: t('SUMMARY_REPORTS.AVG_RESOLUTION_TIME'),\n width: 200,\n cell: defaulSpanRender,\n }),\n columnHelper.accessor('avgReplyTime', {\n header: t('SUMMARY_REPORTS.AVG_REPLY_TIME'),\n width: 200,\n cell: defaulSpanRender,\n }),\n columnHelper.accessor('resolutionsCount', {\n header: t('SUMMARY_REPORTS.RESOLUTION_COUNT'),\n width: 200,\n cell: defaulSpanRender,\n }),\n]);\n\nconst renderAvgTime = value => (value ? formatTime(value) : '--');\n\nconst renderCount = value => (value ? value.toLocaleString() : '--');\n\nconst tableData = computed(() =>\n rowItems.value.map(row => {\n const rowMetrics = getMetrics(row.id);\n const {\n conversationsCount,\n avgFirstResponseTime,\n avgResolutionTime,\n avgReplyTime,\n resolvedConversationsCount,\n } = rowMetrics;\n return {\n id: row.id,\n // we fallback on title, label for instance does not have a name property\n name: row.name ?? row.title,\n type: props.type,\n conversationsCount: renderCount(conversationsCount),\n avgFirstResponseTime: renderAvgTime(avgFirstResponseTime),\n avgReplyTime: renderAvgTime(avgReplyTime),\n avgResolutionTime: renderAvgTime(avgResolutionTime),\n resolutionsCount: renderCount(resolvedConversationsCount),\n };\n })\n);\n\nconst fetchAllData = () => {\n store.dispatch(props.fetchItemsKey);\n store.dispatch(props.actionKey, {\n since: from.value,\n until: to.value,\n businessHours: businessHours.value,\n });\n};\n\nonMounted(() => fetchAllData());\n\nconst onFilterChange = updatedFilter => {\n from.value = updatedFilter.from;\n to.value = updatedFilter.to;\n businessHours.value = updatedFilter.businessHours;\n fetchAllData();\n};\n\nconst table = useVueTable({\n get data() {\n return tableData.value;\n },\n get columns() {\n return columns.value;\n },\n enableSorting: false,\n getCoreRowModel: getCoreRowModel(),\n});\n\n// downloadReports method is not used in this component\n// but it is exposed to be used in the parent component\nconst downloadReports = () => {\n const dispatchMethods = {\n agent: 'downloadAgentReports',\n label: 'downloadLabelReports',\n inbox: 'downloadInboxReports',\n team: 'downloadTeamReports',\n };\n if (dispatchMethods[props.type]) {\n const fileName = generateFileName({\n type: props.type,\n to: to.value,\n businessHours: businessHours.value,\n });\n const params = {\n from: from.value,\n to: to.value,\n fileName,\n businessHours: businessHours.value,\n };\n store.dispatch(dispatchMethods[props.type], params);\n }\n};\n\ndefineExpose({ downloadReports });\n</script>\n\n<template>\n <ReportFilterSelector @filter-change=\"onFilterChange\" />\n <div\n class=\"flex-1 overflow-auto px-2 py-2 mt-5 shadow outline-1 outline outline-n-container rounded-xl bg-n-solid-2\"\n >\n <Table :table=\"table\" />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/TeamLiveReportContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/WootReports.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'opts.groupByKey' dynamic key is used'","line":200,"column":38,"nodeType":"CallExpression","endLine":200,"endColumn":62}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport V4Button from 'dashboard/components-next/button/Button.vue';\nimport { useAlert, useTrack } from 'dashboard/composables';\nimport ReportFilters from './ReportFilters.vue';\nimport ReportContainer from '../ReportContainer.vue';\nimport { GROUP_BY_FILTER } from '../constants';\nimport { generateFileName } from '../../../../../helper/downloadHelper';\nimport { REPORTS_EVENTS } from '../../../../../helper/AnalyticsHelper/events';\nimport ReportHeader from './ReportHeader.vue';\n\nconst GROUP_BY_OPTIONS = {\n DAY: [{ id: 1, groupByKey: 'REPORT.GROUPING_OPTIONS.DAY' }],\n WEEK: [\n { id: 1, groupByKey: 'REPORT.GROUPING_OPTIONS.DAY' },\n { id: 2, groupByKey: 'REPORT.GROUPING_OPTIONS.WEEK' },\n ],\n MONTH: [\n { id: 1, groupByKey: 'REPORT.GROUPING_OPTIONS.DAY' },\n { id: 2, groupByKey: 'REPORT.GROUPING_OPTIONS.WEEK' },\n { id: 3, groupByKey: 'REPORT.GROUPING_OPTIONS.MONTH' },\n ],\n YEAR: [\n { id: 2, groupByKey: 'REPORT.GROUPING_OPTIONS.WEEK' },\n { id: 3, groupByKey: 'REPORT.GROUPING_OPTIONS.MONTH' },\n { id: 4, groupByKey: 'REPORT.GROUPING_OPTIONS.YEAR' },\n ],\n};\n\nexport default {\n components: {\n ReportHeader,\n V4Button,\n ReportFilters,\n ReportContainer,\n },\n props: {\n type: {\n type: String,\n default: 'account',\n },\n getterKey: {\n type: String,\n default: '',\n },\n actionKey: {\n type: String,\n default: '',\n },\n downloadButtonLabel: {\n type: String,\n default: 'Download Reports',\n },\n reportTitle: {\n type: String,\n default: 'Download Reports',\n },\n hasBackButton: {\n type: Boolean,\n default: false,\n },\n selectedItem: {\n type: Object,\n default: null,\n },\n },\n data() {\n return {\n from: 0,\n to: 0,\n selectedFilter: this.selectedItem,\n groupBy: GROUP_BY_FILTER[1],\n groupByfilterItemsList: GROUP_BY_OPTIONS.DAY.map(this.translateOptions),\n selectedGroupByFilter: null,\n businessHours: false,\n };\n },\n computed: {\n filterItemsList() {\n return this.$store.getters[this.getterKey] || [];\n },\n isAgentType() {\n return this.type === 'agent';\n },\n reportKeys() {\n return {\n CONVERSATIONS: 'conversations_count',\n ...(!this.isAgentType && {\n INCOMING_MESSAGES: 'incoming_messages_count',\n }),\n OUTGOING_MESSAGES: 'outgoing_messages_count',\n FIRST_RESPONSE_TIME: 'avg_first_response_time',\n RESOLUTION_TIME: 'avg_resolution_time',\n RESOLUTION_COUNT: 'resolutions_count',\n REPLY_TIME: 'reply_time',\n };\n },\n },\n mounted() {\n this.$store.dispatch(this.actionKey);\n },\n methods: {\n fetchAllData() {\n if (this.selectedFilter) {\n const { from, to, groupBy, businessHours } = this;\n this.$store.dispatch('fetchAccountSummary', {\n from,\n to,\n type: this.type,\n id: this.selectedFilter.id,\n groupBy: groupBy.period,\n businessHours,\n });\n this.fetchChartData();\n }\n },\n fetchChartData() {\n Object.keys(this.reportKeys).forEach(async key => {\n try {\n const { from, to, groupBy, businessHours } = this;\n this.$store.dispatch('fetchAccountReport', {\n metric: this.reportKeys[key],\n from,\n to,\n type: this.type,\n id: this.selectedFilter.id,\n groupBy: groupBy.period,\n businessHours,\n });\n } catch {\n useAlert(this.$t('REPORT.DATA_FETCHING_FAILED'));\n }\n });\n },\n downloadReports() {\n const { from, to, type, businessHours } = this;\n const dispatchMethods = {\n agent: 'downloadAgentReports',\n label: 'downloadLabelReports',\n inbox: 'downloadInboxReports',\n team: 'downloadTeamReports',\n };\n if (dispatchMethods[type]) {\n const fileName = generateFileName({ type, to, businessHours });\n const params = { from, to, fileName, businessHours };\n this.$store.dispatch(dispatchMethods[type], params);\n }\n },\n onDateRangeChange({ from, to, groupBy }) {\n // do not track filter change on inital load\n if (this.from !== 0 && this.to !== 0) {\n useTrack(REPORTS_EVENTS.FILTER_REPORT, {\n filterType: 'date',\n reportType: this.type,\n });\n }\n\n this.from = from;\n this.to = to;\n this.groupByfilterItemsList = this.fetchFilterItems(groupBy);\n const filterItems = this.groupByfilterItemsList.filter(\n item => item.id === this.groupBy.id\n );\n if (filterItems.length > 0) {\n this.selectedGroupByFilter = filterItems[0];\n } else {\n this.selectedGroupByFilter = this.groupByfilterItemsList[0];\n this.groupBy = GROUP_BY_FILTER[this.selectedGroupByFilter.id];\n }\n this.fetchAllData();\n },\n onFilterChange(payload) {\n if (payload) {\n this.selectedFilter = payload;\n this.fetchAllData();\n }\n },\n onGroupByFilterChange(payload) {\n this.groupBy = GROUP_BY_FILTER[payload.id];\n this.fetchAllData();\n\n useTrack(REPORTS_EVENTS.FILTER_REPORT, {\n filterType: 'groupBy',\n filterValue: this.groupBy?.period,\n reportType: this.type,\n });\n },\n fetchFilterItems(groupBy) {\n switch (groupBy) {\n case GROUP_BY_FILTER[2].period:\n return GROUP_BY_OPTIONS.WEEK.map(this.translateOptions);\n case GROUP_BY_FILTER[3].period:\n return GROUP_BY_OPTIONS.MONTH.map(this.translateOptions);\n case GROUP_BY_FILTER[4].period:\n return GROUP_BY_OPTIONS.YEAR.map(this.translateOptions);\n default:\n return GROUP_BY_OPTIONS.DAY.map(this.translateOptions);\n }\n },\n translateOptions(opts) {\n return { id: opts.id, groupBy: this.$t(opts.groupByKey) };\n },\n onBusinessHoursToggle(value) {\n this.businessHours = value;\n this.fetchAllData();\n\n useTrack(REPORTS_EVENTS.FILTER_REPORT, {\n filterType: 'businessHours',\n filterValue: value,\n reportType: this.type,\n });\n },\n },\n};\n</script>\n\n<template>\n <ReportHeader :header-title=\"reportTitle\" :has-back-button=\"hasBackButton\">\n <V4Button\n :label=\"downloadButtonLabel\"\n icon=\"i-ph-download-simple\"\n size=\"sm\"\n @click=\"downloadReports\"\n />\n </ReportHeader>\n <ReportFilters\n v-if=\"filterItemsList\"\n :type=\"type\"\n :filter-items-list=\"filterItemsList\"\n :group-by-filter-items-list=\"groupByfilterItemsList\"\n :selected-group-by-filter=\"selectedGroupByFilter\"\n :current-filter=\"selectedFilter\"\n @date-range-change=\"onDateRangeChange\"\n @filter-change=\"onFilterChange\"\n @group-by-filter-change=\"onGroupByFilterChange\"\n @business-hours-toggle=\"onBusinessHoursToggle\"\n />\n <ReportContainer\n v-if=\"filterItemsList.length\"\n :group-by=\"groupBy\"\n :report-keys=\"reportKeys\"\n />\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/BaseHeatmap.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/BaseHeatmapContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/ConversationHeatmapContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/HeatmapDateRangeSelector.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/HeatmapTooltip.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/ResolutionHeatmapContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/heatmaps/composables/useHeatmapTooltip.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/AgentCell.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/AgentTable.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/MetricCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/TeamTable.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/CSATMetrics.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersAgents.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersDateGroupBy.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersDateRange.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersInboxes.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersLabels.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersRatings.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/Filters/FiltersTeams.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/components/specs/ReportMetricCard.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/reports/reports.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/security/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/security/components/SamlAttributeMap.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'email' is used","line":43,"column":55,"nodeType":null,"endLine":43,"endColumn":60,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1342],"text":"<i18n>\n{\n \"en\": {\n \"email\": \"email\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Icon from 'next/icon/Icon.vue';\n\nconst { t } = useI18n();\nconst isExpanded = ref(false);\n\nconst toggleExpanded = () => {\n isExpanded.value = !isExpanded.value;\n};\n</script>\n\n<template>\n <section\n class=\"rounded-xl border border-n-weak bg-n-solid-1 w-full text-sm text-n-slate-12 mb-5 overflow-hidden\"\n >\n <button\n type=\"button\"\n class=\"w-full px-4 py-3 flex items-center justify-between text-left hover:bg-n-solid-2 transition-colors\"\n @click=\"toggleExpanded\"\n >\n <h4 class=\"font-medium text-n-slate-12\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.TITLE') }}\n </h4>\n <Icon\n icon=\"i-lucide-chevron-down\"\n class=\"transition-transform duration-200\"\n :class=\"{ 'rotate-180': isExpanded }\"\n />\n </button>\n\n <div\n class=\"transition-[height] duration-200 ease-in-out overflow-hidden\"\n :class=\"isExpanded ? 'h-auto' : 'h-0'\"\n >\n <div class=\"px-4 pb-3\">\n <p class=\"text-n-slate-11 mb-2\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.DESCRIPTION') }}\n </p>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <ul class=\"list-none text-n-slate-12 space-y-1\">\n <li><code class=\"px-1 rounded bg-n-slate-3\">{{$t('email')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'first_name' is used","line":44,"column":55,"nodeType":null,"endLine":44,"endColumn":65,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1419],"text":"<i18n>\n{\n \"en\": {\n \"first_name\": \"first_name\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Icon from 'next/icon/Icon.vue';\n\nconst { t } = useI18n();\nconst isExpanded = ref(false);\n\nconst toggleExpanded = () => {\n isExpanded.value = !isExpanded.value;\n};\n</script>\n\n<template>\n <section\n class=\"rounded-xl border border-n-weak bg-n-solid-1 w-full text-sm text-n-slate-12 mb-5 overflow-hidden\"\n >\n <button\n type=\"button\"\n class=\"w-full px-4 py-3 flex items-center justify-between text-left hover:bg-n-solid-2 transition-colors\"\n @click=\"toggleExpanded\"\n >\n <h4 class=\"font-medium text-n-slate-12\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.TITLE') }}\n </h4>\n <Icon\n icon=\"i-lucide-chevron-down\"\n class=\"transition-transform duration-200\"\n :class=\"{ 'rotate-180': isExpanded }\"\n />\n </button>\n\n <div\n class=\"transition-[height] duration-200 ease-in-out overflow-hidden\"\n :class=\"isExpanded ? 'h-auto' : 'h-0'\"\n >\n <div class=\"px-4 pb-3\">\n <p class=\"text-n-slate-11 mb-2\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.DESCRIPTION') }}\n </p>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <ul class=\"list-none text-n-slate-12 space-y-1\">\n <li><code class=\"px-1 rounded bg-n-slate-3\">email</code></li>\n <li><code class=\"px-1 rounded bg-n-slate-3\">{{$t('first_name')}}"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'last_name' is used","line":45,"column":55,"nodeType":null,"endLine":45,"endColumn":64,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1495],"text":"<i18n>\n{\n \"en\": {\n \"last_name\": \"last_name\"\n }\n}\n</i18n>\n\n<script setup>\nimport { ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Icon from 'next/icon/Icon.vue';\n\nconst { t } = useI18n();\nconst isExpanded = ref(false);\n\nconst toggleExpanded = () => {\n isExpanded.value = !isExpanded.value;\n};\n</script>\n\n<template>\n <section\n class=\"rounded-xl border border-n-weak bg-n-solid-1 w-full text-sm text-n-slate-12 mb-5 overflow-hidden\"\n >\n <button\n type=\"button\"\n class=\"w-full px-4 py-3 flex items-center justify-between text-left hover:bg-n-solid-2 transition-colors\"\n @click=\"toggleExpanded\"\n >\n <h4 class=\"font-medium text-n-slate-12\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.TITLE') }}\n </h4>\n <Icon\n icon=\"i-lucide-chevron-down\"\n class=\"transition-transform duration-200\"\n :class=\"{ 'rotate-180': isExpanded }\"\n />\n </button>\n\n <div\n class=\"transition-[height] duration-200 ease-in-out overflow-hidden\"\n :class=\"isExpanded ? 'h-auto' : 'h-0'\"\n >\n <div class=\"px-4 pb-3\">\n <p class=\"text-n-slate-11 mb-2\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.DESCRIPTION') }}\n </p>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <ul class=\"list-none text-n-slate-12 space-y-1\">\n <li><code class=\"px-1 rounded bg-n-slate-3\">email</code></li>\n <li><code class=\"px-1 rounded bg-n-slate-3\">first_name</code></li>\n <li><code class=\"px-1 rounded bg-n-slate-3\">{{$t('last_name')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport Icon from 'next/icon/Icon.vue';\n\nconst { t } = useI18n();\nconst isExpanded = ref(false);\n\nconst toggleExpanded = () => {\n isExpanded.value = !isExpanded.value;\n};\n</script>\n\n<template>\n <section\n class=\"rounded-xl border border-n-weak bg-n-solid-1 w-full text-sm text-n-slate-12 mb-5 overflow-hidden\"\n >\n <button\n type=\"button\"\n class=\"w-full px-4 py-3 flex items-center justify-between text-left hover:bg-n-solid-2 transition-colors\"\n @click=\"toggleExpanded\"\n >\n <h4 class=\"font-medium text-n-slate-12\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.TITLE') }}\n </h4>\n <Icon\n icon=\"i-lucide-chevron-down\"\n class=\"transition-transform duration-200\"\n :class=\"{ 'rotate-180': isExpanded }\"\n />\n </button>\n\n <div\n class=\"transition-[height] duration-200 ease-in-out overflow-hidden\"\n :class=\"isExpanded ? 'h-auto' : 'h-0'\"\n >\n <div class=\"px-4 pb-3\">\n <p class=\"text-n-slate-11 mb-2\">\n {{ t('SECURITY_SETTINGS.SAML.ATTRIBUTE_MAPPING.DESCRIPTION') }}\n </p>\n <!-- eslint-disable vue/no-bare-strings-in-template -->\n <ul class=\"list-none text-n-slate-12 space-y-1\">\n <li><code class=\"px-1 rounded bg-n-slate-3\">email</code></li>\n <li><code class=\"px-1 rounded bg-n-slate-3\">first_name</code></li>\n <li><code class=\"px-1 rounded bg-n-slate-3\">last_name</code></li>\n </ul>\n </div>\n </div>\n </section>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/security/components/SamlInfoSection.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/security/components/SamlPaywall.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/security/components/SamlSettings.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/security/security.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/settings.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/AddSLA.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/SlaForm.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'input.label' dynamic key is used'","line":195,"column":17,"nodeType":"CallExpression","endLine":195,"endColumn":32},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'input.placeholder' dynamic key is used'","line":196,"column":23,"nodeType":"CallExpression","endLine":196,"endColumn":44}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { mapGetters } from 'vuex';\nimport { convertSecondsToTimeUnit } from '@chatwoot/utils';\nimport validations from './validations';\nimport SlaTimeInput from './SlaTimeInput.vue';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\nimport { useVuelidate } from '@vuelidate/core';\nimport ToggleSwitch from 'dashboard/components-next/switch/Switch.vue';\n\nexport default {\n components: {\n SlaTimeInput,\n NextButton,\n ToggleSwitch,\n },\n props: {\n selectedResponse: {\n type: Object,\n default: () => {},\n },\n submitLabel: {\n type: String,\n required: true,\n },\n },\n emits: ['close', 'submitSla'],\n setup() {\n return { v$: useVuelidate() };\n },\n data() {\n return {\n name: '',\n description: '',\n isSlaTimeInputsInvalid: false,\n slaTimeInputsValidation: {},\n slaTimeInputs: [\n {\n threshold: null,\n unit: 'Minutes',\n label: 'SLA.FORM.FIRST_RESPONSE_TIME.LABEL',\n placeholder: 'SLA.FORM.FIRST_RESPONSE_TIME.PLACEHOLDER',\n },\n {\n threshold: null,\n unit: 'Minutes',\n label: 'SLA.FORM.NEXT_RESPONSE_TIME.LABEL',\n placeholder: 'SLA.FORM.NEXT_RESPONSE_TIME.PLACEHOLDER',\n },\n {\n threshold: null,\n unit: 'Minutes',\n label: 'SLA.FORM.RESOLUTION_TIME.LABEL',\n placeholder: 'SLA.FORM.RESOLUTION_TIME.PLACEHOLDER',\n },\n ],\n onlyDuringBusinessHours: false,\n };\n },\n validations,\n computed: {\n ...mapGetters({\n uiFlags: 'sla/getUIFlags',\n }),\n isSubmitDisabled() {\n return (\n this.v$.name.$invalid ||\n this.isSlaTimeInputsInvalid ||\n this.uiFlags.isUpdating\n );\n },\n slaNameErrorMessage() {\n let errorMessage = '';\n if (this.v$.name.$error) {\n if (!this.v$.name.required) {\n errorMessage = this.$t('SLA.FORM.NAME.REQUIRED_ERROR');\n } else if (!this.v$.name.minLength) {\n errorMessage = this.$t('SLA.FORM.NAME.MINIMUM_LENGTH_ERROR');\n }\n }\n return errorMessage;\n },\n },\n mounted() {\n if (this.selectedResponse) this.setFormValues();\n },\n methods: {\n onClose() {\n this.$emit('close');\n },\n setFormValues() {\n const {\n name,\n description,\n first_response_time_threshold: firstResponseTimeThreshold,\n next_response_time_threshold: nextResponseTimeThreshold,\n resolution_time_threshold: resolutionTimeThreshold,\n only_during_business_hours: onlyDuringBusinessHours,\n } = this.selectedResponse;\n\n this.name = name;\n this.description = description;\n this.onlyDuringBusinessHours = onlyDuringBusinessHours;\n\n const thresholds = [\n firstResponseTimeThreshold,\n nextResponseTimeThreshold,\n resolutionTimeThreshold,\n ];\n this.slaTimeInputs.forEach((input, index) => {\n const converted = convertSecondsToTimeUnit(thresholds[index], {\n minute: 'Minutes',\n hour: 'Hours',\n day: 'Days',\n });\n input.threshold = converted.time;\n input.unit = converted.unit;\n });\n },\n updateThreshold(index, value) {\n this.slaTimeInputs[index].threshold = value;\n },\n updateUnit(index, unit) {\n this.slaTimeInputs[index].unit = unit;\n },\n onSubmit() {\n const payload = {\n name: this.name,\n description: this.description,\n first_response_time_threshold: this.convertToSeconds(0),\n next_response_time_threshold: this.convertToSeconds(1),\n resolution_time_threshold: this.convertToSeconds(2),\n only_during_business_hours: this.onlyDuringBusinessHours,\n };\n this.$emit('submitSla', payload);\n },\n convertToSeconds(index) {\n const { threshold, unit } = this.slaTimeInputs[index];\n if (threshold === null || threshold === 0) return null;\n const unitsToSeconds = { Minutes: 60, Hours: 3600, Days: 86400 };\n return Number(threshold * (unitsToSeconds[unit] || 1));\n },\n handleIsInvalid(index, isInvalid) {\n this.slaTimeInputsValidation = {\n ...this.slaTimeInputsValidation,\n [index]: isInvalid,\n };\n\n this.checkValidationState();\n },\n checkValidationState() {\n const isAnyInvalid = Object.values(this.slaTimeInputsValidation).some(\n isInvalid => isInvalid\n );\n this.isSlaTimeInputsInvalid = isAnyInvalid;\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col h-auto overflow-auto\">\n <form class=\"flex flex-wrap mx-0\" @submit.prevent=\"onSubmit\">\n <woot-input\n v-model=\"name\"\n :class=\"{ error: v$.name.$error }\"\n class=\"w-full\"\n :styles=\"{\n borderRadius: '0.75rem',\n padding: '0.375rem 0.75rem',\n fontSize: '0.875rem',\n }\"\n :label=\"$t('SLA.FORM.NAME.LABEL')\"\n :placeholder=\"$t('SLA.FORM.NAME.PLACEHOLDER')\"\n :error=\"slaNameErrorMessage\"\n @input=\"v$.name.$touch\"\n @blur=\"v$.name.$touch\"\n />\n <woot-input\n v-model=\"description\"\n class=\"w-full\"\n :styles=\"{\n borderRadius: '0.75rem',\n padding: '0.375rem 0.75rem',\n fontSize: '0.875rem',\n }\"\n :label=\"$t('SLA.FORM.DESCRIPTION.LABEL')\"\n :placeholder=\"$t('SLA.FORM.DESCRIPTION.PLACEHOLDER')\"\n />\n\n <SlaTimeInput\n v-for=\"(input, index) in slaTimeInputs\"\n :key=\"index\"\n :threshold=\"input.threshold\"\n :threshold-unit=\"input.unit\"\n :label=\"$t(input.label)\"\n :placeholder=\"$t(input.placeholder)\"\n @update-threshold=\"updateThreshold(index, $event)\"\n @unit=\"updateUnit(index, $event)\"\n @is-in-valid=\"handleIsInvalid(index, $event)\"\n />\n\n <div\n class=\"mt-3 flex h-10 items-center text-sm w-full gap-2 border border-solid border-n-strong px-3 py-1.5 rounded-xl justify-between\"\n >\n <span for=\"sla_bh\" class=\"text-n-slate-11\">\n {{ $t('SLA.FORM.BUSINESS_HOURS.PLACEHOLDER') }}\n </span>\n <ToggleSwitch id=\"sla_bh\" v-model=\"onlyDuringBusinessHours\" />\n </div>\n\n <div class=\"flex items-center justify-end w-full gap-2 mt-8\">\n <NextButton\n faded\n slate\n type=\"reset\"\n :label=\"$t('SLA.FORM.CANCEL')\"\n @click.prevent=\"onClose\"\n />\n <NextButton\n type=\"submit\"\n :label=\"submitLabel\"\n :disabled=\"isSubmitDisabled\"\n :is-loading=\"uiFlags.isUpdating\"\n />\n </div>\n </form>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/SlaTimeInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/BaseEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLABusinessHoursLabel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLAEmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLAHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLAListItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLAListItemLoading.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLAPaywallEnterprise.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/components/SLAResponseTime.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`SLA.LIST.RESPONSE_TYPES.${responseType}`' dynamic key is used'","line":22,"column":25,"nodeType":"CallExpression","endLine":22,"endColumn":70},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`SLA.LIST.RESPONSE_TYPES.SHORT_HAND.${responseType}`' dynamic key is used'","line":28,"column":10,"nodeType":"CallExpression","endLine":28,"endColumn":66},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text ':' is used","line":29,"column":36,"nodeType":null,"endLine":29,"endColumn":37,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,806],"text":"<i18n>\n{\n \"en\": {\n \":\": \":\"\n }\n}\n</i18n>\n\n<script setup>\ndefineProps({\n responseType: {\n type: String,\n default: '',\n },\n responseTime: {\n type: String,\n default: '',\n },\n});\n</script>\n\n<template>\n <div\n class=\"flex flex-row items-start w-full h-full gap-1 sm:items-end sm:px-6 sm:py-2 sm:gap-2 sm:flex-col\"\n >\n <span\n class=\"inline-flex items-center gap-1 tracking-[-0.6%] text-sm ltr:pl-1.5 sm:ltr:pl-0 rtl:pr-1.5 sm:rtl:pr-0 text-n-slate-11\"\n >\n <fluent-icon\n v-tooltip.left=\"$t(`SLA.LIST.RESPONSE_TYPES.${responseType}`)\"\n size=\"14\"\n icon=\"information\"\n type=\"outline\"\n class=\"flex-shrink-0 hidden text-sm font-normal sm:flex sm:font-medium text-n-slate-11\"\n />\n {{ $t(`SLA.LIST.RESPONSE_TYPES.SHORT_HAND.${responseType}`) }}\n <span class=\"flex sm:hidden\">{{$t(':')}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\ndefineProps({\n responseType: {\n type: String,\n default: '',\n },\n responseTime: {\n type: String,\n default: '',\n },\n});\n</script>\n\n<template>\n <div\n class=\"flex flex-row items-start w-full h-full gap-1 sm:items-end sm:px-6 sm:py-2 sm:gap-2 sm:flex-col\"\n >\n <span\n class=\"inline-flex items-center gap-1 tracking-[-0.6%] text-sm ltr:pl-1.5 sm:ltr:pl-0 rtl:pr-1.5 sm:rtl:pr-0 text-n-slate-11\"\n >\n <fluent-icon\n v-tooltip.left=\"$t(`SLA.LIST.RESPONSE_TYPES.${responseType}`)\"\n size=\"14\"\n icon=\"information\"\n type=\"outline\"\n class=\"flex-shrink-0 hidden text-sm font-normal sm:flex sm:font-medium text-n-slate-11\"\n />\n {{ $t(`SLA.LIST.RESPONSE_TYPES.SHORT_HAND.${responseType}`) }}\n <span class=\"flex sm:hidden\">:</span>\n </span>\n <span\n class=\"text-sm sm:text-2xl font-medium tracking-[-1.5%] text-n-slate-12\"\n >\n {{ responseTime }}\n </span>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/sla.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/sla/validations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/AgentSelector.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Create/AddAgents.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Create/CreateTeam.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Create/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`TEAMS_SETTINGS.CREATE_FLOW.${step}.TITLE`' dynamic key is used'","line":15,"column":18,"nodeType":"CallExpression","endLine":15,"endColumn":69},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`TEAMS_SETTINGS.CREATE_FLOW.${step}.BODY`' dynamic key is used'","line":16,"column":17,"nodeType":"CallExpression","endLine":16,"endColumn":67}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nexport default {\n computed: {\n items() {\n const steps = ['WIZARD_CREATE', 'WIZARD_ADD_AGENTS', 'WIZARD_FINISH'];\n\n const routes = {\n WIZARD_CREATE: 'settings_teams_new',\n WIZARD_ADD_AGENTS: 'settings_teams_add_agents',\n WIZARD_FINISH: 'settings_teams_finish',\n };\n\n return steps.map(step => {\n return {\n title: this.$t(`TEAMS_SETTINGS.CREATE_FLOW.${step}.TITLE`),\n body: this.$t(`TEAMS_SETTINGS.CREATE_FLOW.${step}.BODY`),\n route: routes[step],\n };\n });\n },\n },\n};\n</script>\n\n<template>\n <div class=\"mx-2 flex flex-col gap-6 mb-8\">\n <div\n class=\"grid grid-cols-1 lg:grid-cols-8 lg:divide-x lg:divide-n-weak rounded-xl border border-n-weak min-h-[43rem]\"\n >\n <woot-wizard\n class=\"hidden lg:block col-span-2 h-fit py-8 px-6\"\n :items=\"items\"\n />\n <router-view />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Edit/EditAgents.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Edit/EditTeam.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Edit/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`TEAMS_SETTINGS.EDIT_FLOW.${step}.TITLE`' dynamic key is used'","line":19,"column":18,"nodeType":"CallExpression","endLine":19,"endColumn":67},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`TEAMS_SETTINGS.EDIT_FLOW.${step}.BODY`' dynamic key is used'","line":20,"column":17,"nodeType":"CallExpression","endLine":20,"endColumn":65}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nexport default {\n computed: {\n items() {\n const routes = {\n EDIT_WIZARD_DETAILS: 'settings_teams_edit',\n EDIT_WIZARD_AGENTS: 'settings_teams_edit_members',\n EDIT_WIZARD_FINISH: 'settings_teams_edit_finish',\n };\n\n const steps = [\n 'EDIT_WIZARD_DETAILS',\n 'EDIT_WIZARD_AGENTS',\n 'EDIT_WIZARD_FINISH',\n ];\n\n return steps.map(step => {\n return {\n title: this.$t(`TEAMS_SETTINGS.EDIT_FLOW.${step}.TITLE`),\n body: this.$t(`TEAMS_SETTINGS.EDIT_FLOW.${step}.BODY`),\n route: routes[step],\n };\n });\n },\n },\n};\n</script>\n\n<template>\n <div class=\"mx-2 flex flex-col gap-6 mb-8\">\n <div\n class=\"grid grid-cols-1 lg:grid-cols-8 lg:divide-x lg:divide-n-weak rounded-xl border border-n-weak min-h-[43rem]\"\n >\n <woot-wizard\n class=\"hidden lg:block col-span-2 h-fit py-8 px-6\"\n :items=\"items\"\n />\n <router-view />\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/FinishSetup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/TeamForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/helpers/validations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/settings/teams/teams.routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/suspended/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/dashboard/upgrade/UpgradePage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/routes/index.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/asset.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/assistant.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/bulkActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/copilotMessages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/copilotThreads.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/customTools.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/document.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/inboxes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/response.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/scenarios.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/captain/tools.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/SLAReports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/accounts.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/agentBots.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/agentCapacityPolicies.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/agents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/assignmentPolicies.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/attributes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/auditlogs.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/auth.js","messages":[],"suppressedMessages":[{"ruleId":"no-useless-catch","severity":2,"message":"Unnecessary try/catch wrapper.","line":130,"column":5,"nodeType":"TryStatement","messageId":"unnecessaryCatch","endLine":135,"endColumn":6,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-useless-catch","severity":2,"message":"Unnecessary try/catch wrapper.","line":140,"column":5,"nodeType":"TryStatement","messageId":"unnecessaryCatch","endLine":145,"endColumn":6,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/automations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/bulkActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/campaigns.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/cannedResponse.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contactConversations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contactLabels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contactNotes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contacts/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contacts/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contacts/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/contacts/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationLabels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationMetadata.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationPage.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationSearch.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationStats.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationTypingStatus.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversationWatchers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/actions/messageReadActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/actions/messageTranslateActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/helpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/helpers/actionHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/helpers/filterHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/helpers/specs/actionHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/helpers/specs/filterHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/specs/helpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/conversations/specs/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/csat.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/customRole.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/customViews.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/dashboardApps.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/draftMessages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/specs/action.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/specs/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/specs/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterArticles/specs/mutation.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/specs/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/specs/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/specs/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterCategories/specs/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/specs/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/specs/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/specs/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/helpCenterPortals/specs/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/inboxAssignableAgents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/inboxMembers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/inboxes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/inboxes/channelActions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/integrations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/labels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/macros.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/notifications/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/notifications/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/notifications/helpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/notifications/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/notifications/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/reports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/sla.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/account/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/account/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/account/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentBots/agentBots.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentBots/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentBots/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentBots/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentCapacityPolicies/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentCapacityPolicies/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentCapacityPolicies/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agentCapacityPolicies/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agents/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agents/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agents/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/agents/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/assignmentPolicies/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/assignmentPolicies/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/assignmentPolicies/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/assignmentPolicies/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/attributes/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/attributes/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/attributes/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/attributes/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/auth/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/auth/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/auth/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/automations/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/automations/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/automations/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/automations/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/bulkActions/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/bulkActions/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/bulkActions/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/bulkActions/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/campaigns/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/campaigns/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/campaigns/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/campaigns/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/cannedResponses/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactConversations/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactConversations/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactConversations/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactConversations/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactLabels/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactLabels/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactLabels/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactNotes/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactNotes/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactNotes/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contactNotes/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contacts/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contacts/filterApiResponse.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contacts/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contacts/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/contacts/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationLabels/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationLabels/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationLabels/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationMetadata/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationMetadata/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationPage/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationPage/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationPage/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationSearch/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationSearch/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationSearch/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationStats/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationStats/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationStats/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationTypingStatus/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationTypingStatus/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationTypingStatus/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationWatchers/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationWatchers/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationWatchers/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversationWatchers/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversations/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversations/conversations.fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversations/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversations/helpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversations/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/conversations/testConversationResponse.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/csat/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/csat/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/csat/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customRole/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customRole/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customRole/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customRole/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customViews/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customViews/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customViews/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/customViews/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/dashboardApps/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/dashboardApps/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/dashboardApps/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/dashboardApps/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/draftMessages/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/draftMessages/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/draftMessages/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/draftMessages/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxAssignableMembers/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxAssignableMembers/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxAssignableMembers/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxAssignableMembers/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxes/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxes/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxes/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxes/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/inboxes/templateFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/integrations/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/integrations/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/integrations/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/integrations/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/labels/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/labels/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/labels/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/labels/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/macros/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/macros/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/macros/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/macros/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/notifications/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/notifications/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/notifications/helpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/notifications/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/reports/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/sla/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/sla/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/sla/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/sla/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/slaReports/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/slaReports/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/slaReports/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/slaReports/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/summaryReports.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teamMembers/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teamMembers/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teamMembers/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teamMembers/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teams/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teams/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teams/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/teams/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/userNotificationSettings/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/userNotificationSettings/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/userNotificationSettings/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/webhooks/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/webhooks/fixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/webhooks/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/specs/webhooks/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/summaryReports.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/teamMembers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/teams/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/teams/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/teams/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/teams/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/teams/types.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/userNotificationSettings.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/modules/webhooks.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/mutation-types.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/storeFactory.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/storeFactory.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/storeFactoryHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/utils/api.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":67,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":67,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[2088,2147],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":72,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":72,"endColumn":18,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"log"},"fix":{"range":[2245,2301],"text":""},"desc":"Remove the console.log()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/store/utils/specs/api.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/stores/calls.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/dashboard/stores/companies.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/dashboard.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/portal.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/sdk.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/superadmin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/superadmin_pages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/survey.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/v3app.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/entrypoints/widget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/api/article.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/components/PublicArticleSearch.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/components/PublicSearchInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/components/SearchSuggestions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/components/TableOfContents.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/portalHelpers.js","messages":[],"suppressedMessages":[{"ruleId":"vue/one-component-per-file","severity":1,"message":"There is more than one component in this file.","line":75,"column":29,"nodeType":"ObjectExpression","messageId":"toManyComponents","endLine":78,"endColumn":8,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/one-component-per-file","severity":1,"message":"There is more than one component in this file.","line":90,"column":29,"nodeType":"ObjectExpression","messageId":"toManyComponents","endLine":96,"endColumn":8,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/portalThemeHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/specs/portal.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/portal/specs/portalTheme.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/DOMHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/IFrameHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/bubbleHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/cookieHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/sdk.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/settingsHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/specs/cookieHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/sdk/specs/settingsHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ArticleSkeletonLoader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/Branding.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/Button.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/CardButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ChatCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ChatForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ChatOption.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ChatOptions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/CustomerSatisfaction.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/DateSeparator.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/EmojiOrIcon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/FluentIcon/DashboardIcon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/FluentIcon/Icon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/FluentIcon/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/GreetingsEditor.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/IframeLoader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/PhoneInput/helper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ResizableTextArea.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/Spinner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/StarRating.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/TextArea.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/charts/BarChart.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/emoji/EmojiInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/specs/DateSeparator.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/specs/Spinner.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/MultiselectDropdown.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/MultiselectDropdownItems.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/dropdown/AddLabel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/dropdown/DropdownDivider.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/dropdown/DropdownHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/dropdown/DropdownItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/dropdown/DropdownMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/dropdown/DropdownSubMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/label/LabelDropdown.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'L' is used","line":124,"column":12,"nodeType":null,"endLine":124,"endColumn":15,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,2737],"text":"<i18n>\n{\n \"en\": {\n \"L\": \"L\"\n }\n}\n</i18n>\n\n<script>\nimport LabelDropdownItem from './LabelDropdownItem.vue';\nimport Hotkey from 'dashboard/components/base/Hotkey.vue';\nimport AddLabelModal from 'dashboard/routes/dashboard/settings/labels/AddLabel.vue';\nimport { picoSearch } from '@scmmishra/pico-search';\nimport { sanitizeLabel } from 'shared/helpers/sanitizeData';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n LabelDropdownItem,\n AddLabelModal,\n Hotkey,\n NextButton,\n },\n\n props: {\n accountLabels: {\n type: Array,\n default: () => [],\n },\n selectedLabels: {\n type: Array,\n default: () => [],\n },\n allowCreation: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update', 'add', 'remove'],\n\n data() {\n return {\n search: '',\n createModalVisible: false,\n };\n },\n\n computed: {\n createLabelPlaceholder() {\n const label = this.$t('CONTACT_PANEL.LABELS.LABEL_SELECT.CREATE_LABEL');\n return this.search ? `${label}:` : label;\n },\n\n filteredActiveLabels() {\n if (!this.search) return this.accountLabels;\n\n return picoSearch(this.accountLabels, this.search, ['title'], {\n threshold: 0.9,\n });\n },\n\n noResult() {\n return this.filteredActiveLabels.length === 0;\n },\n\n hasExactMatchInResults() {\n return this.filteredActiveLabels.some(\n label => label.title === this.search\n );\n },\n\n shouldShowCreate() {\n return this.allowCreation && this.filteredActiveLabels.length < 3;\n },\n\n parsedSearch() {\n return sanitizeLabel(this.search);\n },\n },\n\n mounted() {\n this.focusInput();\n },\n\n methods: {\n focusInput() {\n this.$refs.searchbar.focus();\n },\n\n updateLabels(label) {\n this.$emit('update', label);\n },\n\n onAdd(label) {\n this.$emit('add', label);\n },\n\n onRemove(label) {\n this.$emit('remove', label);\n },\n\n onAddRemove(label) {\n if (this.selectedLabels.includes(label.title)) {\n this.onRemove(label.title);\n } else {\n this.onAdd(label);\n }\n },\n\n showCreateModal() {\n this.createModalVisible = true;\n },\n\n hideCreateModal() {\n this.createModalVisible = false;\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col w-full max-h-[12.5rem]\">\n <div class=\"flex items-center justify-center mb-1\">\n <h4\n class=\"flex-grow m-0 overflow-hidden text-sm text-n-slate-12 whitespace-nowrap text-ellipsis\"\n >\n {{ $t('CONTACT_PANEL.LABELS.LABEL_SELECT.TITLE') }}\n </h4>\n <Hotkey\n custom-class=\"border border-solid text-n-slate-12 bg-n-slate-2 text-xxs border-n-strong flex-shrink-0\"\n >\n {{ $t('L')"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport LabelDropdownItem from './LabelDropdownItem.vue';\nimport Hotkey from 'dashboard/components/base/Hotkey.vue';\nimport AddLabelModal from 'dashboard/routes/dashboard/settings/labels/AddLabel.vue';\nimport { picoSearch } from '@scmmishra/pico-search';\nimport { sanitizeLabel } from 'shared/helpers/sanitizeData';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: {\n LabelDropdownItem,\n AddLabelModal,\n Hotkey,\n NextButton,\n },\n\n props: {\n accountLabels: {\n type: Array,\n default: () => [],\n },\n selectedLabels: {\n type: Array,\n default: () => [],\n },\n allowCreation: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update', 'add', 'remove'],\n\n data() {\n return {\n search: '',\n createModalVisible: false,\n };\n },\n\n computed: {\n createLabelPlaceholder() {\n const label = this.$t('CONTACT_PANEL.LABELS.LABEL_SELECT.CREATE_LABEL');\n return this.search ? `${label}:` : label;\n },\n\n filteredActiveLabels() {\n if (!this.search) return this.accountLabels;\n\n return picoSearch(this.accountLabels, this.search, ['title'], {\n threshold: 0.9,\n });\n },\n\n noResult() {\n return this.filteredActiveLabels.length === 0;\n },\n\n hasExactMatchInResults() {\n return this.filteredActiveLabels.some(\n label => label.title === this.search\n );\n },\n\n shouldShowCreate() {\n return this.allowCreation && this.filteredActiveLabels.length < 3;\n },\n\n parsedSearch() {\n return sanitizeLabel(this.search);\n },\n },\n\n mounted() {\n this.focusInput();\n },\n\n methods: {\n focusInput() {\n this.$refs.searchbar.focus();\n },\n\n updateLabels(label) {\n this.$emit('update', label);\n },\n\n onAdd(label) {\n this.$emit('add', label);\n },\n\n onRemove(label) {\n this.$emit('remove', label);\n },\n\n onAddRemove(label) {\n if (this.selectedLabels.includes(label.title)) {\n this.onRemove(label.title);\n } else {\n this.onAdd(label);\n }\n },\n\n showCreateModal() {\n this.createModalVisible = true;\n },\n\n hideCreateModal() {\n this.createModalVisible = false;\n },\n },\n};\n</script>\n\n<template>\n <div class=\"flex flex-col w-full max-h-[12.5rem]\">\n <div class=\"flex items-center justify-center mb-1\">\n <h4\n class=\"flex-grow m-0 overflow-hidden text-sm text-n-slate-12 whitespace-nowrap text-ellipsis\"\n >\n {{ $t('CONTACT_PANEL.LABELS.LABEL_SELECT.TITLE') }}\n </h4>\n <Hotkey\n custom-class=\"border border-solid text-n-slate-12 bg-n-slate-2 text-xxs border-n-strong flex-shrink-0\"\n >\n {{ 'L' }}\n </Hotkey>\n </div>\n <div class=\"flex-auto flex-grow-0 flex-shrink-0 mb-2 max-h-8\">\n <input\n ref=\"searchbar\"\n v-model=\"search\"\n type=\"text\"\n class=\"search-input\"\n autofocus=\"true\"\n :placeholder=\"$t('CONTACT_PANEL.LABELS.LABEL_SELECT.PLACEHOLDER')\"\n />\n </div>\n <div\n class=\"flex items-start justify-start flex-auto flex-grow flex-shrink overflow-auto\"\n >\n <div class=\"w-full my-1\">\n <woot-dropdown-menu>\n <LabelDropdownItem\n v-for=\"label in filteredActiveLabels\"\n :key=\"label.title\"\n :title=\"label.title\"\n :color=\"label.color\"\n :selected=\"selectedLabels.includes(label.title)\"\n @select-label=\"onAddRemove(label)\"\n />\n </woot-dropdown-menu>\n <div\n v-if=\"noResult\"\n class=\"flex justify-center py-4 px-2.5 font-medium text-xs text-n-slate-11\"\n >\n {{ $t('CONTACT_PANEL.LABELS.LABEL_SELECT.NO_RESULT') }}\n </div>\n <div\n v-if=\"allowCreation && shouldShowCreate\"\n class=\"flex pt-1 border-t border-solid border-n-weak\"\n >\n <NextButton\n icon=\"i-lucide-plus\"\n slate\n sm\n ghost\n :label=\"`${createLabelPlaceholder} ${parsedSearch}`\"\n :disabled=\"hasExactMatchInResults\"\n @click=\"showCreateModal\"\n />\n\n <woot-modal\n v-model:show=\"createModalVisible\"\n :on-close=\"hideCreateModal\"\n >\n <AddLabelModal\n :prefill-title=\"parsedSearch\"\n @close=\"hideCreateModal\"\n />\n </woot-modal>\n </div>\n </div>\n </div>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/components/ui/label/LabelDropdownItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/specs/useBranding.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/specs/useFilter.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/specs/useLocale.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/specs/useMessageFormatter.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/specs/useNumberFormatter.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/useBranding.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/useFilter.js","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${filteri18nKey}.GROUPS.CUSTOM_ATTRIBUTES`' dynamic key is used'","line":56,"column":13,"nodeType":"CallExpression","endLine":56,"endColumn":60},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${filteri18nKey}.GROUPS.${group.i18nGroup}`' dynamic key is used'","line":67,"column":15,"nodeType":"CallExpression","endLine":67,"endColumn":63},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`${filteri18nKey}.ATTRIBUTES.${attribute.i18nKey}`' dynamic key is used'","line":71,"column":19,"nodeType":"CallExpression","endLine":71,"endColumn":73},{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.${activeStatus}.TEXT`' dynamic key is used'","line":106,"column":19,"nodeType":"CallExpression","endLine":106,"endColumn":80}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"import wootConstants from 'dashboard/constants/globals';\nimport { useStore } from 'dashboard/composables/store';\nimport { useI18n } from 'vue-i18n';\nimport { filterAttributeGroups as conversationFilterAttributeGroups } from 'dashboard/components/widgets/conversation/advancedFilterItems';\nimport { filterAttributeGroups as contactFilterAttributeGroups } from 'dashboard/routes/dashboard/contacts/contactFilterItems';\nimport * as OPERATORS from 'dashboard/components/widgets/FilterInput/FilterOperatorTypes.js';\n\nconst customAttributeInputType = key => {\n switch (key) {\n case 'date':\n return 'date';\n case 'text':\n return 'plain_text';\n case 'list':\n return 'search_select';\n case 'checkbox':\n return 'search_select';\n default:\n return 'plain_text';\n }\n};\n\nconst getOperatorTypes = key => {\n switch (key) {\n case 'list':\n return OPERATORS.OPERATOR_TYPES_1;\n case 'text':\n return OPERATORS.OPERATOR_TYPES_3;\n case 'number':\n return OPERATORS.OPERATOR_TYPES_1;\n case 'link':\n return OPERATORS.OPERATOR_TYPES_1;\n case 'date':\n return OPERATORS.OPERATOR_TYPES_4;\n case 'checkbox':\n return OPERATORS.OPERATOR_TYPES_1;\n default:\n return OPERATORS.OPERATOR_TYPES_1;\n }\n};\n\nexport const useFilter = ({ filteri18nKey, attributeModel }) => {\n const { t: $t } = useI18n();\n const { getters } = useStore();\n\n const filterAttributeGroups =\n attributeModel === 'contact_attribute'\n ? contactFilterAttributeGroups\n : conversationFilterAttributeGroups;\n\n const setFilterAttributes = () => {\n const allCustomAttributes =\n getters['attributes/getAttributesByModel'](attributeModel);\n\n const customAttributesFormatted = {\n name: $t(`${filteri18nKey}.GROUPS.CUSTOM_ATTRIBUTES`),\n attributes: allCustomAttributes.map(attr => {\n return {\n key: attr.attribute_key,\n name: attr.attribute_display_name,\n };\n }),\n };\n\n const allFilterGroups = filterAttributeGroups.map(group => {\n return {\n name: $t(`${filteri18nKey}.GROUPS.${group.i18nGroup}`),\n attributes: group.attributes.map(attribute => {\n return {\n key: attribute.key,\n name: $t(`${filteri18nKey}.ATTRIBUTES.${attribute.i18nKey}`),\n };\n }),\n };\n });\n\n const customAttributeTypes = allCustomAttributes.map(attr => {\n return {\n attributeKey: attr.attribute_key,\n attributeI18nKey: `CUSTOM_ATTRIBUTE_${attr.attribute_display_type.toUpperCase()}`,\n inputType: customAttributeInputType(attr.attribute_display_type),\n filterOperators: getOperatorTypes(attr.attribute_display_type),\n attributeModel: 'custom_attributes',\n };\n });\n\n return {\n filterGroups: [...allFilterGroups, customAttributesFormatted],\n filterTypes: [...customAttributeTypes],\n };\n };\n\n const initializeStatusAndAssigneeFilterToModal = (\n activeStatus,\n currentUserDetails,\n activeAssigneeTab\n ) => {\n if (activeStatus !== '') {\n return {\n attribute_key: 'status',\n attribute_model: 'standard',\n filter_operator: 'equal_to',\n values: [\n {\n id: activeStatus,\n name: $t(`CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.${activeStatus}.TEXT`),\n },\n ],\n query_operator: 'and',\n custom_attribute_type: '',\n };\n }\n if (activeAssigneeTab === wootConstants.ASSIGNEE_TYPE.ME) {\n return {\n attribute_key: 'assignee_id',\n filter_operator: 'equal_to',\n values: currentUserDetails,\n query_operator: 'and',\n custom_attribute_type: '',\n };\n }\n return null;\n };\n\n const initializeInboxTeamAndLabelFilterToModal = (\n conversationInbox,\n inbox,\n teamId,\n activeTeam,\n label\n ) => {\n const filters = [];\n if (conversationInbox) {\n filters.push({\n attribute_key: 'inbox_id',\n attribute_model: 'standard',\n filter_operator: 'equal_to',\n values: [\n {\n id: conversationInbox,\n name: inbox.name,\n },\n ],\n query_operator: 'and',\n custom_attribute_type: '',\n });\n }\n if (teamId) {\n filters.push({\n attribute_key: 'team_id',\n attribute_model: 'standard',\n filter_operator: 'equal_to',\n values: activeTeam,\n query_operator: 'and',\n custom_attribute_type: '',\n });\n }\n if (label) {\n filters.push({\n attribute_key: 'labels',\n attribute_model: 'standard',\n filter_operator: 'equal_to',\n values: [\n {\n id: label,\n name: label,\n },\n ],\n query_operator: 'and',\n custom_attribute_type: '',\n });\n }\n return filters;\n };\n\n return {\n setFilterAttributes,\n initializeStatusAndAssigneeFilterToModal,\n initializeInboxTeamAndLabelFilterToModal,\n };\n};\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/useLocale.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/useMessageFormatter.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/composables/useNumberFormatter.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/busEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/campaign.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/contentType.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/countries.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/links.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/locales.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/messages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/openai.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/constants/sharedFrameEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/AudioNotificationHelper.js","messages":[],"suppressedMessages":[{"ruleId":"default-param-last","severity":2,"message":"Default parameters should be last.","line":14,"column":37,"nodeType":"AssignmentPattern","messageId":"shouldBeLast","endLine":14,"endColumn":49,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-promise-executor-return","severity":2,"message":"Return values from promise executor functions cannot be read.","line":38,"column":35,"nodeType":"CallExpression","messageId":"returnsValue","endLine":38,"endColumn":40,"suggestions":[{"messageId":"wrapBraces","fix":{"range":[1219,1224],"text":"{res()}"},"desc":"Wrap the expression in `{}`."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/BaseActionCableConnector.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onReconnect'.","line":73,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":73,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onDisconnected'.","line":76,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":76,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/CustomErrors.js","messages":[],"suppressedMessages":[{"ruleId":"max-classes-per-file","severity":2,"message":"File has too many classes (2). Maximum allowed is 1.","line":2,"column":1,"nodeType":"Program","messageId":"maximumExceeded","endLine":15,"endColumn":2,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/CustomEventHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/DateHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/FileHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/HTMLSanitizer.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/IntegrationHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/KeyboardHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/MessageFormatter.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/MessageTypeHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/ReportsDataHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/Validators.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/cache.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/clipboard.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/colorHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/documentHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/emoji.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/localStorage.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":57,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":57,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[1593,1655],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":67,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":67,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[1876,1948],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":81,"column":7,"nodeType":"MemberExpression","messageId":"unexpected","endLine":81,"endColumn":20,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"error"},"fix":{"range":[2276,2349],"text":""},"desc":"Remove the console.error()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/markdownIt/link.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/mitt.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/portalHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/sanitizeData.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/sessionStorage.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/CustomErrors.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/CustomEventHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/DateHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/Emoji.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/FileHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/KeyboardHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/MessageFormatter.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/MessageTypeHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/ReportsDataHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/ValidatorsHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/cache.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/clipboard.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/colorHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/documentHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/localStorage.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/mitt.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/portalHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/sanitizeData.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/sessionStorage.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/specs/timeHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/timeHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/helpers/vuex/mutationHelpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/mixins/inboxMixin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/mixins/keyboardEventListenerMixins.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/mixins/specs/MockComponent.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/mixins/specs/filterFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/mixins/specs/inboxMixin.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/shared/store/globalConfig.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/superadmin_pages/components/playground/BotMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/superadmin_pages/components/playground/Header.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Back' is used","line":20,"column":10,"nodeType":null,"endLine":20,"endColumn":16,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,389],"text":"<i18n>\n{\n \"en\": {\n \"Back\": \"Back\"\n }\n}\n</i18n>\n\n<script setup>\ndefineProps({\n responseSourcePath: {\n type: String,\n required: true,\n },\n responseSourceName: {\n type: String,\n required: true,\n },\n});\n</script>\n\n<template>\n <header\n class=\"flex items-center px-8 py-4 bg-white border-b border-slate-100\"\n role=\"banner\"\n >\n <a :href=\"responseSourcePath\" class=\"text-woot-500 hover:underline mr-4\">\n {{ $t('Back')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Robin AI playground' is used","line":29,"column":12,"nodeType":null,"endLine":29,"endColumn":33,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,749],"text":"<i18n>\n{\n \"en\": {\n \"Robin AI playground\": \"Robin AI playground\"\n }\n}\n</i18n>\n\n<script setup>\ndefineProps({\n responseSourcePath: {\n type: String,\n required: true,\n },\n responseSourceName: {\n type: String,\n required: true,\n },\n});\n</script>\n\n<template>\n <header\n class=\"flex items-center px-8 py-4 bg-white border-b border-slate-100\"\n role=\"banner\"\n >\n <a :href=\"responseSourcePath\" class=\"text-woot-500 hover:underline mr-4\">\n {{ 'Back' }}\n </a>\n <div\n class=\"border border-solid border-slate-100 text-slate-700 mr-4 p-2 rounded-full\"\n >\n <svg width=\"24\" height=\"24\"><use xlink:href=\"#icon-mist-fill\" /></svg>\n </div>\n <div class=\"flex flex-col h-14 justify-center\">\n <h1 id=\"page-title\" class=\"text-base font-medium text-slate-900\">\n {{ $t('Robin AI playground')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Chat with the source' is used","line":32,"column":12,"nodeType":null,"endLine":32,"endColumn":34,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,839],"text":"<i18n>\n{\n \"en\": {\n \"Chat with the source\": \"Chat with the source\"\n }\n}\n</i18n>\n\n<script setup>\ndefineProps({\n responseSourcePath: {\n type: String,\n required: true,\n },\n responseSourceName: {\n type: String,\n required: true,\n },\n});\n</script>\n\n<template>\n <header\n class=\"flex items-center px-8 py-4 bg-white border-b border-slate-100\"\n role=\"banner\"\n >\n <a :href=\"responseSourcePath\" class=\"text-woot-500 hover:underline mr-4\">\n {{ 'Back' }}\n </a>\n <div\n class=\"border border-solid border-slate-100 text-slate-700 mr-4 p-2 rounded-full\"\n >\n <svg width=\"24\" height=\"24\"><use xlink:href=\"#icon-mist-fill\" /></svg>\n </div>\n <div class=\"flex flex-col h-14 justify-center\">\n <h1 id=\"page-title\" class=\"text-base font-medium text-slate-900\">\n {{ 'Robin AI playground' }}\n </h1>\n <p class=\"text-sm text-slate-600\">\n {{ $t('Chat with the source')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'and evaluate it’s efficiency.' is used","line":36,"column":12,"nodeType":null,"endLine":36,"endColumn":43,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,971],"text":"<i18n>\n{\n \"en\": {\n \"and evaluate it’s efficiency.\": \"and evaluate it’s efficiency.\"\n }\n}\n</i18n>\n\n<script setup>\ndefineProps({\n responseSourcePath: {\n type: String,\n required: true,\n },\n responseSourceName: {\n type: String,\n required: true,\n },\n});\n</script>\n\n<template>\n <header\n class=\"flex items-center px-8 py-4 bg-white border-b border-slate-100\"\n role=\"banner\"\n >\n <a :href=\"responseSourcePath\" class=\"text-woot-500 hover:underline mr-4\">\n {{ 'Back' }}\n </a>\n <div\n class=\"border border-solid border-slate-100 text-slate-700 mr-4 p-2 rounded-full\"\n >\n <svg width=\"24\" height=\"24\"><use xlink:href=\"#icon-mist-fill\" /></svg>\n </div>\n <div class=\"flex flex-col h-14 justify-center\">\n <h1 id=\"page-title\" class=\"text-base font-medium text-slate-900\">\n {{ 'Robin AI playground' }}\n </h1>\n <p class=\"text-sm text-slate-600\">\n {{ 'Chat with the source' }}\n <span class=\"font-medium\">\n {{ responseSourceName }}\n </span>\n {{ $t('and evaluate it’s efficiency.')"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\ndefineProps({\n responseSourcePath: {\n type: String,\n required: true,\n },\n responseSourceName: {\n type: String,\n required: true,\n },\n});\n</script>\n\n<template>\n <header\n class=\"flex items-center px-8 py-4 bg-white border-b border-slate-100\"\n role=\"banner\"\n >\n <a :href=\"responseSourcePath\" class=\"text-woot-500 hover:underline mr-4\">\n {{ 'Back' }}\n </a>\n <div\n class=\"border border-solid border-slate-100 text-slate-700 mr-4 p-2 rounded-full\"\n >\n <svg width=\"24\" height=\"24\"><use xlink:href=\"#icon-mist-fill\" /></svg>\n </div>\n <div class=\"flex flex-col h-14 justify-center\">\n <h1 id=\"page-title\" class=\"text-base font-medium text-slate-900\">\n {{ 'Robin AI playground' }}\n </h1>\n <p class=\"text-sm text-slate-600\">\n {{ 'Chat with the source' }}\n <span class=\"font-medium\">\n {{ responseSourceName }}\n </span>\n {{ 'and evaluate it’s efficiency.' }}\n </p>\n </div>\n </header>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/superadmin_pages/components/playground/TypingIndicator.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/superadmin_pages/components/playground/UserMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/superadmin_pages/views/dashboard/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Admin Dashboard' is used","line":44,"column":12,"nodeType":null,"endLine":44,"endColumn":29,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,965],"text":"<i18n>\n{\n \"en\": {\n \"Admin Dashboard\": \"Admin Dashboard\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\nconst props = defineProps({\n componentData: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst prepareData = sourceData => {\n var labels = [];\n var data = [];\n sourceData.forEach(item => {\n labels.push(item[0]);\n data.push(item[1]);\n });\n return {\n labels,\n datasets: [\n {\n type: 'bar',\n backgroundColor: 'rgb(31, 147, 255)',\n yAxisID: 'y',\n label: 'Conversations',\n data: data,\n },\n ],\n };\n};\n\nconst chartData = computed(() => {\n return prepareData(props.componentData.chartData);\n});\n\nconst { accountsCount, usersCount, inboxesCount, conversationsCount } =\n props.componentData;\n</script>\n\n<template>\n <div class=\"w-full h-full\">\n <header class=\"main-content__header\" role=\"banner\">\n <h1 id=\"page-title\" class=\"main-content__page-title\">\n {{ $t('Admin Dashboard')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Accounts' is used","line":52,"column":19,"nodeType":null,"endLine":52,"endColumn":29,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1214],"text":"<i18n>\n{\n \"en\": {\n \"Accounts\": \"Accounts\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\nconst props = defineProps({\n componentData: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst prepareData = sourceData => {\n var labels = [];\n var data = [];\n sourceData.forEach(item => {\n labels.push(item[0]);\n data.push(item[1]);\n });\n return {\n labels,\n datasets: [\n {\n type: 'bar',\n backgroundColor: 'rgb(31, 147, 255)',\n yAxisID: 'y',\n label: 'Conversations',\n data: data,\n },\n ],\n };\n};\n\nconst chartData = computed(() => {\n return prepareData(props.componentData.chartData);\n});\n\nconst { accountsCount, usersCount, inboxesCount, conversationsCount } =\n props.componentData;\n</script>\n\n<template>\n <div class=\"w-full h-full\">\n <header class=\"main-content__header\" role=\"banner\">\n <h1 id=\"page-title\" class=\"main-content__page-title\">\n {{ 'Admin Dashboard' }}\n </h1>\n </header>\n\n <section class=\"main-content__body main-content__body--flush\">\n <div class=\"report--list\">\n <div class=\"report-card\">\n <div class=\"metric\">{{ accountsCount }}</div>\n <div>{{ $t('Accounts')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Users' is used","line":56,"column":19,"nodeType":null,"endLine":56,"endColumn":26,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1351],"text":"<i18n>\n{\n \"en\": {\n \"Users\": \"Users\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\nconst props = defineProps({\n componentData: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst prepareData = sourceData => {\n var labels = [];\n var data = [];\n sourceData.forEach(item => {\n labels.push(item[0]);\n data.push(item[1]);\n });\n return {\n labels,\n datasets: [\n {\n type: 'bar',\n backgroundColor: 'rgb(31, 147, 255)',\n yAxisID: 'y',\n label: 'Conversations',\n data: data,\n },\n ],\n };\n};\n\nconst chartData = computed(() => {\n return prepareData(props.componentData.chartData);\n});\n\nconst { accountsCount, usersCount, inboxesCount, conversationsCount } =\n props.componentData;\n</script>\n\n<template>\n <div class=\"w-full h-full\">\n <header class=\"main-content__header\" role=\"banner\">\n <h1 id=\"page-title\" class=\"main-content__page-title\">\n {{ 'Admin Dashboard' }}\n </h1>\n </header>\n\n <section class=\"main-content__body main-content__body--flush\">\n <div class=\"report--list\">\n <div class=\"report-card\">\n <div class=\"metric\">{{ accountsCount }}</div>\n <div>{{ 'Accounts' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ usersCount }}</div>\n <div>{{ $t('Users')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Inboxes' is used","line":60,"column":19,"nodeType":null,"endLine":60,"endColumn":28,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1492],"text":"<i18n>\n{\n \"en\": {\n \"Inboxes\": \"Inboxes\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\nconst props = defineProps({\n componentData: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst prepareData = sourceData => {\n var labels = [];\n var data = [];\n sourceData.forEach(item => {\n labels.push(item[0]);\n data.push(item[1]);\n });\n return {\n labels,\n datasets: [\n {\n type: 'bar',\n backgroundColor: 'rgb(31, 147, 255)',\n yAxisID: 'y',\n label: 'Conversations',\n data: data,\n },\n ],\n };\n};\n\nconst chartData = computed(() => {\n return prepareData(props.componentData.chartData);\n});\n\nconst { accountsCount, usersCount, inboxesCount, conversationsCount } =\n props.componentData;\n</script>\n\n<template>\n <div class=\"w-full h-full\">\n <header class=\"main-content__header\" role=\"banner\">\n <h1 id=\"page-title\" class=\"main-content__page-title\">\n {{ 'Admin Dashboard' }}\n </h1>\n </header>\n\n <section class=\"main-content__body main-content__body--flush\">\n <div class=\"report--list\">\n <div class=\"report-card\">\n <div class=\"metric\">{{ accountsCount }}</div>\n <div>{{ 'Accounts' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ usersCount }}</div>\n <div>{{ 'Users' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ inboxesCount }}</div>\n <div>{{ $t('Inboxes')"}}]},{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text 'Conversations' is used","line":64,"column":19,"nodeType":null,"endLine":64,"endColumn":34,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,1645],"text":"<i18n>\n{\n \"en\": {\n \"Conversations\": \"Conversations\"\n }\n}\n</i18n>\n\n<script setup>\nimport { computed } from 'vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\nconst props = defineProps({\n componentData: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst prepareData = sourceData => {\n var labels = [];\n var data = [];\n sourceData.forEach(item => {\n labels.push(item[0]);\n data.push(item[1]);\n });\n return {\n labels,\n datasets: [\n {\n type: 'bar',\n backgroundColor: 'rgb(31, 147, 255)',\n yAxisID: 'y',\n label: 'Conversations',\n data: data,\n },\n ],\n };\n};\n\nconst chartData = computed(() => {\n return prepareData(props.componentData.chartData);\n});\n\nconst { accountsCount, usersCount, inboxesCount, conversationsCount } =\n props.componentData;\n</script>\n\n<template>\n <div class=\"w-full h-full\">\n <header class=\"main-content__header\" role=\"banner\">\n <h1 id=\"page-title\" class=\"main-content__page-title\">\n {{ 'Admin Dashboard' }}\n </h1>\n </header>\n\n <section class=\"main-content__body main-content__body--flush\">\n <div class=\"report--list\">\n <div class=\"report-card\">\n <div class=\"metric\">{{ accountsCount }}</div>\n <div>{{ 'Accounts' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ usersCount }}</div>\n <div>{{ 'Users' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ inboxesCount }}</div>\n <div>{{ 'Inboxes' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ conversationsCount }}</div>\n <div>{{ $t('Conversations')"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport BarChart from 'shared/components/charts/BarChart.vue';\nconst props = defineProps({\n componentData: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst prepareData = sourceData => {\n var labels = [];\n var data = [];\n sourceData.forEach(item => {\n labels.push(item[0]);\n data.push(item[1]);\n });\n return {\n labels,\n datasets: [\n {\n type: 'bar',\n backgroundColor: 'rgb(31, 147, 255)',\n yAxisID: 'y',\n label: 'Conversations',\n data: data,\n },\n ],\n };\n};\n\nconst chartData = computed(() => {\n return prepareData(props.componentData.chartData);\n});\n\nconst { accountsCount, usersCount, inboxesCount, conversationsCount } =\n props.componentData;\n</script>\n\n<template>\n <div class=\"w-full h-full\">\n <header class=\"main-content__header\" role=\"banner\">\n <h1 id=\"page-title\" class=\"main-content__page-title\">\n {{ 'Admin Dashboard' }}\n </h1>\n </header>\n\n <section class=\"main-content__body main-content__body--flush\">\n <div class=\"report--list\">\n <div class=\"report-card\">\n <div class=\"metric\">{{ accountsCount }}</div>\n <div>{{ 'Accounts' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ usersCount }}</div>\n <div>{{ 'Users' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ inboxesCount }}</div>\n <div>{{ 'Inboxes' }}</div>\n </div>\n <div class=\"report-card\">\n <div class=\"metric\">{{ conversationsCount }}</div>\n <div>{{ 'Conversations' }}</div>\n </div>\n </div>\n </section>\n <!-- eslint-disable vue/no-static-inline-styles -->\n <BarChart\n class=\"p-8 w-full\"\n :collection=\"chartData\"\n style=\"max-height: 500px\"\n />\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/superadmin_pages/views/playground/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/App.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/api/endPoints.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/api/specs/endPoints.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/api/survey.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/components/Banner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/components/Feedback.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/components/Rating.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/helpers/axios.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/i18n/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/survey/views/Response.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/App.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/api/apiClient.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/api/auth.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/api/testimonials.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/Divider/SimpleDivider.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/Form/CheckBox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/Form/Input.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/Form/Select.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/Form/WithLabel.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/GoogleOauth/Button.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/GoogleOauth/Button.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/SnackBar/Container.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/components/SnackBar/Item.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/helpers/AuthHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/helpers/CommonHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/helpers/RouteHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/helpers/specs/AuthHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/helpers/specs/CommonHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/helpers/specs/RouteHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/confirmation/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/password/Edit.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/reset/password/Index.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-raw-text","severity":1,"message":"raw text '.\n ' is used","line":105,"column":40,"nodeType":null,"endLine":106,"endColumn":9,"suggestions":[{"desc":"Add the resource to the '<i18n>' block.","fix":{"range":[0,3324],"text":"<i18n>\n{\n \"en\": {\n \".\\n \": \".\\n \"\n }\n}\n</i18n>\n\n<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport { useAlert } from 'dashboard/composables';\nimport { required, minLength, email } from '@vuelidate/validators';\nimport { useBranding } from 'shared/composables/useBranding';\nimport FormInput from '../../../../components/Form/Input.vue';\nimport { resetPassword } from '../../../../api/auth';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: { FormInput, NextButton },\n setup() {\n const { replaceInstallationName } = useBranding();\n return { v$: useVuelidate(), replaceInstallationName };\n },\n data() {\n return {\n credentials: { email: '' },\n resetPassword: {\n message: '',\n showLoading: false,\n },\n error: '',\n };\n },\n validations() {\n return {\n credentials: {\n email: {\n required,\n email,\n minLength: minLength(4),\n },\n },\n };\n },\n methods: {\n showAlertMessage(message) {\n // Reset loading, current selected agent\n this.resetPassword.showLoading = false;\n useAlert(message);\n },\n submit() {\n this.resetPassword.showLoading = true;\n resetPassword(this.credentials)\n .then(res => {\n let successMessage = this.$t('RESET_PASSWORD.API.SUCCESS_MESSAGE');\n if (res.data && res.data.message) {\n successMessage = res.data.message;\n }\n this.showAlertMessage(successMessage);\n })\n .catch(error => {\n let errorMessage = this.$t('RESET_PASSWORD.API.ERROR_MESSAGE');\n if (error?.response?.data?.message) {\n errorMessage = error.response.data.message;\n }\n this.showAlertMessage(errorMessage);\n });\n },\n },\n};\n</script>\n\n<template>\n <div\n class=\"flex flex-col justify-center w-full min-h-screen py-12 bg-n-brand/5 dark:bg-n-background sm:px-6 lg:px-8\"\n >\n <form\n class=\"bg-white shadow sm:mx-auto sm:w-full sm:max-w-lg dark:bg-n-solid-2 p-11 sm:shadow-lg sm:rounded-lg\"\n @submit.prevent=\"submit\"\n >\n <h1\n class=\"mb-1 text-2xl font-medium tracking-tight text-left text-n-slate-12\"\n >\n {{ $t('RESET_PASSWORD.TITLE') }}\n </h1>\n <p\n class=\"mb-4 text-sm font-normal leading-6 tracking-normal text-n-slate-11\"\n >\n {{ replaceInstallationName($t('RESET_PASSWORD.DESCRIPTION')) }}\n </p>\n <div class=\"space-y-5\">\n <FormInput\n v-model=\"credentials.email\"\n name=\"email_address\"\n :has-error=\"v$.credentials.email.$error\"\n :error-message=\"$t('RESET_PASSWORD.EMAIL.ERROR')\"\n :placeholder=\"$t('RESET_PASSWORD.EMAIL.PLACEHOLDER')\"\n @input=\"v$.credentials.email.$touch\"\n />\n <NextButton\n lg\n type=\"submit\"\n data-testid=\"submit_button\"\n class=\"w-full\"\n :label=\"$t('RESET_PASSWORD.SUBMIT')\"\n :disabled=\"v$.credentials.email.$invalid || resetPassword.showLoading\"\n :is-loading=\"resetPassword.showLoading\"\n />\n </div>\n <p class=\"mt-4 -mb-1 text-sm text-n-slate-11\">\n {{ $t('RESET_PASSWORD.GO_BACK_TO_LOGIN') }}\n <router-link to=\"/auth/login\" class=\"text-link text-n-brand\">\n {{ $t('COMMON.CLICK_HERE') }}{{$t(`.\n `)}}"}}]}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport { useVuelidate } from '@vuelidate/core';\nimport { useAlert } from 'dashboard/composables';\nimport { required, minLength, email } from '@vuelidate/validators';\nimport { useBranding } from 'shared/composables/useBranding';\nimport FormInput from '../../../../components/Form/Input.vue';\nimport { resetPassword } from '../../../../api/auth';\nimport NextButton from 'dashboard/components-next/button/Button.vue';\n\nexport default {\n components: { FormInput, NextButton },\n setup() {\n const { replaceInstallationName } = useBranding();\n return { v$: useVuelidate(), replaceInstallationName };\n },\n data() {\n return {\n credentials: { email: '' },\n resetPassword: {\n message: '',\n showLoading: false,\n },\n error: '',\n };\n },\n validations() {\n return {\n credentials: {\n email: {\n required,\n email,\n minLength: minLength(4),\n },\n },\n };\n },\n methods: {\n showAlertMessage(message) {\n // Reset loading, current selected agent\n this.resetPassword.showLoading = false;\n useAlert(message);\n },\n submit() {\n this.resetPassword.showLoading = true;\n resetPassword(this.credentials)\n .then(res => {\n let successMessage = this.$t('RESET_PASSWORD.API.SUCCESS_MESSAGE');\n if (res.data && res.data.message) {\n successMessage = res.data.message;\n }\n this.showAlertMessage(successMessage);\n })\n .catch(error => {\n let errorMessage = this.$t('RESET_PASSWORD.API.ERROR_MESSAGE');\n if (error?.response?.data?.message) {\n errorMessage = error.response.data.message;\n }\n this.showAlertMessage(errorMessage);\n });\n },\n },\n};\n</script>\n\n<template>\n <div\n class=\"flex flex-col justify-center w-full min-h-screen py-12 bg-n-brand/5 dark:bg-n-background sm:px-6 lg:px-8\"\n >\n <form\n class=\"bg-white shadow sm:mx-auto sm:w-full sm:max-w-lg dark:bg-n-solid-2 p-11 sm:shadow-lg sm:rounded-lg\"\n @submit.prevent=\"submit\"\n >\n <h1\n class=\"mb-1 text-2xl font-medium tracking-tight text-left text-n-slate-12\"\n >\n {{ $t('RESET_PASSWORD.TITLE') }}\n </h1>\n <p\n class=\"mb-4 text-sm font-normal leading-6 tracking-normal text-n-slate-11\"\n >\n {{ replaceInstallationName($t('RESET_PASSWORD.DESCRIPTION')) }}\n </p>\n <div class=\"space-y-5\">\n <FormInput\n v-model=\"credentials.email\"\n name=\"email_address\"\n :has-error=\"v$.credentials.email.$error\"\n :error-message=\"$t('RESET_PASSWORD.EMAIL.ERROR')\"\n :placeholder=\"$t('RESET_PASSWORD.EMAIL.PLACEHOLDER')\"\n @input=\"v$.credentials.email.$touch\"\n />\n <NextButton\n lg\n type=\"submit\"\n data-testid=\"submit_button\"\n class=\"w-full\"\n :label=\"$t('RESET_PASSWORD.SUBMIT')\"\n :disabled=\"v$.credentials.email.$invalid || resetPassword.showLoading\"\n :is-loading=\"resetPassword.showLoading\"\n />\n </div>\n <p class=\"mt-4 -mb-1 text-sm text-n-slate-11\">\n {{ $t('RESET_PASSWORD.GO_BACK_TO_LOGIN') }}\n <router-link to=\"/auth/login\" class=\"text-link text-n-brand\">\n {{ $t('COMMON.CLICK_HERE') }}.\n </router-link>\n </p>\n </form>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/signup/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/signup/components/Signup/Form.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/signup/components/Testimonials/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/auth/signup/components/Testimonials/TestimonialCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/login/Index.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/login/Saml.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/onboarding/OnboardingStep.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/v3/views/routes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/App.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/agent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/article.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/campaign.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/contacts.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/conversation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/conversationLabels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/endPoints.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/events.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/integration.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/message.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/api/specs/endPoints.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/AgentMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/AgentMessageBubble.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/AgentTypingBubble.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/Availability/AvailabilityContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/Availability/AvailabilityText.story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/Availability/AvailabilityText.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'replyTimeKey' dynamic key is used'","line":62,"column":10,"nodeType":"CallExpression","endLine":62,"endColumn":25}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script setup>\nimport { computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { getTime } from 'dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js';\nimport { findNextAvailableSlotDetails } from 'widget/helpers/availabilityHelpers';\n\nconst props = defineProps({\n time: {\n type: Date,\n required: true,\n },\n utcOffset: {\n type: String,\n required: true,\n },\n workingHours: {\n type: Array,\n required: true,\n },\n workingHoursEnabled: {\n type: Boolean,\n required: true,\n },\n replyTime: {\n type: String,\n default: 'in_a_few_minutes',\n },\n isOnline: {\n type: Boolean,\n required: true,\n },\n isInWorkingHours: {\n type: Boolean,\n required: true,\n },\n});\n\nconst MINUTE_ROUNDING_INTERVAL = 5;\nconst HOUR_THRESHOLD_FOR_EXACT_TIME = 3;\nconst MINUTES_IN_HOUR = 60;\n\nconst { t } = useI18n();\n\nconst dayNames = computed(() => [\n t('DAY_NAMES.SUNDAY'),\n t('DAY_NAMES.MONDAY'),\n t('DAY_NAMES.TUESDAY'),\n t('DAY_NAMES.WEDNESDAY'),\n t('DAY_NAMES.THURSDAY'),\n t('DAY_NAMES.FRIDAY'),\n t('DAY_NAMES.SATURDAY'),\n]);\n\n// Check if all days in working hours are closed\nconst allDayClosed = computed(() => {\n if (!props.workingHours.length) return false;\n return props.workingHours.every(slot => slot.closedAllDay);\n});\n\nconst replyTimeMessage = computed(() => {\n const replyTimeKey = `REPLY_TIME.${props.replyTime.toUpperCase()}`;\n return t(replyTimeKey);\n});\n\nconst nextSlot = computed(() => {\n if (\n !props.workingHoursEnabled ||\n allDayClosed.value ||\n (props.isInWorkingHours && props.isOnline)\n ) {\n return null;\n }\n\n const slot = findNextAvailableSlotDetails(\n props.time,\n props.utcOffset,\n props.workingHours\n );\n if (!slot) return null;\n\n return {\n ...slot,\n hoursUntilOpen: Math.floor(slot.minutesUntilOpen / MINUTES_IN_HOUR),\n remainingMinutes: slot.minutesUntilOpen % MINUTES_IN_HOUR,\n };\n});\n\nconst roundedMinutesUntilOpen = computed(() => {\n if (!nextSlot.value) return 0;\n return (\n Math.ceil(nextSlot.value.remainingMinutes / MINUTE_ROUNDING_INTERVAL) *\n MINUTE_ROUNDING_INTERVAL\n );\n});\n\nconst adjustedHoursUntilOpen = computed(() => {\n if (!nextSlot.value) return 0;\n return nextSlot.value.remainingMinutes > 0\n ? nextSlot.value.hoursUntilOpen + 1\n : nextSlot.value.hoursUntilOpen;\n});\n\nconst formattedOpeningTime = computed(() => {\n if (!nextSlot.value) return '';\n return getTime(\n nextSlot.value.config.openHour || 0,\n nextSlot.value.config.openMinutes || 0\n );\n});\n</script>\n\n<template>\n <span>\n <!-- 1. If currently in working hours, show reply time -->\n <template v-if=\"isInWorkingHours\">\n {{ replyTimeMessage }}\n </template>\n\n <!-- 2. Else, if working hours are disabled, show based on online status -->\n <template v-else-if=\"!workingHoursEnabled\">\n {{\n isOnline\n ? replyTimeMessage\n : t('TEAM_AVAILABILITY.BACK_AS_SOON_AS_POSSIBLE')\n }}\n </template>\n\n <!-- 3. Else (not in working hours, but working hours ARE enabled) -->\n <!-- Check if all configured slots are 'closedAllDay' -->\n <template v-else-if=\"allDayClosed\">\n {{ t('TEAM_AVAILABILITY.BACK_AS_SOON_AS_POSSIBLE') }}\n </template>\n\n <!-- 4. Else (not in WH, WH enabled, not allDayClosed), calculate next slot -->\n <template v-else-if=\"!nextSlot\">\n {{ t('REPLY_TIME.BACK_IN_SOME_TIME') }}\n </template>\n\n <!-- Tomorrow -->\n <template v-else-if=\"nextSlot.daysUntilOpen === 1\">\n {{ t('REPLY_TIME.BACK_TOMORROW') }}\n </template>\n\n <!-- Multiple days away (eg: on Monday) -->\n <template v-else-if=\"nextSlot.daysUntilOpen > 1\">\n {{\n t('REPLY_TIME.BACK_ON_DAY', {\n day: dayNames[nextSlot.config.dayOfWeek],\n })\n }}\n </template>\n\n <!-- Same day - less than 1 hour (eg: in 5 minutes) -->\n <template v-else-if=\"nextSlot.hoursUntilOpen === 0\">\n {{\n t('REPLY_TIME.BACK_IN_MINUTES', {\n time: `${roundedMinutesUntilOpen}`,\n })\n }}\n </template>\n\n <!-- Same day - less than 3 hours (eg: in 2 hours) -->\n <template\n v-else-if=\"nextSlot.hoursUntilOpen < HOUR_THRESHOLD_FOR_EXACT_TIME\"\n >\n {{ t('REPLY_TIME.BACK_IN_HOURS', adjustedHoursUntilOpen) }}\n </template>\n\n <!-- Same day - 3+ hours away (eg: at 10:00 AM) -->\n <template v-else>\n {{\n t('REPLY_TIME.BACK_AT_TIME', {\n time: formattedOpeningTime,\n })\n }}\n </template>\n </span>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/Banner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatAttachment.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatFooter.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatHeaderExpanded.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatInputWrap.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ChatSendButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ConversationWrap.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/DragWrapper.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/FileBubble.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/FooterReplyTo.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`ATTACHMENTS.${fileType}.CONTENT`' dynamic key is used'","line":21,"column":14,"nodeType":"CallExpression","endLine":21,"endColumn":56}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport FluentIcon from 'shared/components/FluentIcon/Index.vue';\n\nexport default {\n name: 'FooterReplyTo',\n components: { FluentIcon },\n props: {\n inReplyTo: {\n type: Object,\n default: () => {},\n },\n },\n emits: ['dismiss'],\n computed: {\n replyToAttachment() {\n if (!this.inReplyTo?.attachments?.length) {\n return '';\n }\n\n const [{ file_type: fileType } = {}] = this.inReplyTo.attachments;\n return this.$t(`ATTACHMENTS.${fileType}.CONTENT`);\n },\n },\n};\n</script>\n\n<template>\n <div\n class=\"mb-2.5 rounded-[7px] bg-n-slate-3 px-2 py-1.5 text-sm text-n-slate-11 flex items-center gap-2\"\n >\n <div class=\"items-center flex-grow truncate\">\n <strong>{{ $t('FOOTER_REPLY_TO.REPLY_TO') }}</strong>\n {{ inReplyTo.content || replyToAttachment }}\n </div>\n <button\n class=\"items-end flex-shrink-0 p-1 rounded-md hover:bg-n-slate-5\"\n @click=\"$emit('dismiss')\"\n >\n <FluentIcon icon=\"dismiss\" size=\"12\" />\n </button>\n </div>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/Form/PhoneInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/GroupedAvatars.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/HeaderActions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ImageBubble.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/MessageReplyButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/PreChat/Form.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/ReplyToChip.vue","messages":[{"ruleId":"@intlify/vue-i18n/no-dynamic-keys","severity":1,"message":"'`ATTACHMENTS.${fileType}.CONTENT`' dynamic key is used'","line":27,"column":14,"nodeType":"CallExpression","endLine":27,"endColumn":56}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<script>\nimport FluentIcon from 'shared/components/FluentIcon/Index.vue';\n\nexport default {\n name: 'AgentMessage',\n components: {\n FluentIcon,\n },\n props: {\n replyTo: {\n type: Object,\n default: () => {},\n },\n },\n data() {\n return {\n timeOutID: null,\n };\n },\n computed: {\n replyToAttachment() {\n if (!this.replyTo?.attachments?.length) {\n return '';\n }\n\n const [{ file_type: fileType } = {}] = this.replyTo.attachments;\n return this.$t(`ATTACHMENTS.${fileType}.CONTENT`);\n },\n },\n\n unmounted() {\n clearTimeout(this.timeOutID);\n },\n methods: {\n navigateTo(id) {\n const elementId = `cwmsg-${id}`;\n this.$nextTick(() => {\n const el = document.getElementById(elementId);\n el.scrollIntoView();\n el.classList.add('bg-n-slate-3', 'dark:bg-n-solid-3');\n this.timeOutID = setTimeout(() => {\n el.classList.remove('bg-n-slate-3', 'dark:bg-n-solid-3');\n }, 500);\n });\n },\n },\n};\n</script>\n\n<template>\n <button\n class=\"px-1.5 py-0.5 rounded-md text-n-slate-11 bg-n-slate-4 opacity-60 hover:opacity-100 cursor-pointer flex items-center gap-1.5\"\n @click=\"navigateTo(replyTo.id)\"\n >\n <FluentIcon icon=\"arrow-reply\" size=\"12\" class=\"flex-shrink-0\" />\n <div class=\"truncate max-w-[8rem]\">\n {{ replyTo.content || replyToAttachment }}\n </div>\n </button>\n</template>\n","usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/TeamAvailability.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/UnreadMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/UnreadMessageList.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/UserMessage.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/UserMessageBubble.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/VideoBubble.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/layouts/ViewWithHeader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/pageComponents/Home/Article/ArticleBlock.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/pageComponents/Home/Article/ArticleContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/pageComponents/Home/Article/ArticleListItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/pageComponents/Home/Article/SkeletonLoader.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/template/Article.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/template/EmailInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/components/template/IntegrationCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/composables/specs/useAttachments.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/composables/specs/useAvailability.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/composables/specs/useDarkMode.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/composables/useAttachments.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/composables/useAvailability.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/composables/useDarkMode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/constants/errorTypes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/constants/sdkEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/constants/widgetBusEvents.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/IframeEventHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/WidgetAudioNotificationHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/actionCable.js","messages":[],"suppressedMessages":[{"ruleId":"class-methods-use-this","severity":2,"message":"Expected 'this' to be used by class method 'onContactMerge'.","line":98,"column":3,"nodeType":"ArrowFunctionExpression","messageId":"missingThis","endLine":98,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/availabilityHelpers.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":26,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":26,"endColumn":17,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"warn"},"fix":{"range":[774,881],"text":""},"desc":"Remove the console.warn()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/axios.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/campaignHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/campaignTimer.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/popoutHelper.js","messages":[],"suppressedMessages":[{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":24,"column":5,"nodeType":"MemberExpression","messageId":"unexpected","endLine":24,"endColumn":16,"suggestions":[{"messageId":"removeConsole","data":{"propertyName":"log"},"fix":{"range":[519,536],"text":""},"desc":"Remove the console.log()."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/specs/availabilityHelpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/specs/campaignFixtures.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/specs/campaignHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/specs/urlParamsHelper.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/specs/utils.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/urlParamsHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/utils.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/helpers/uuid.js","messages":[],"suppressedMessages":[{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '|'.","line":4,"column":15,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":4,"endColumn":39,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '|'.","line":6,"column":31,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":6,"endColumn":46,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '&'.","line":6,"column":32,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":6,"endColumn":39,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/i18n/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/mixins/configMixin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/mixins/messageMixin.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/mixins/specs/configMixin.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/mixins/specs/messageFixture.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/mixins/specs/messageMixin.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/router.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/agent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/appConfig.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/articles.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/campaign.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/contacts.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversation/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversation/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversation/helpers.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversation/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversation/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversationAttributes.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/conversationLabels.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/events.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/message.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/agent/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/agent/data.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/agent/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/agent/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/appConfig/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/appConfig/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/appConfig/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/articles.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/campaign/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/campaign/data.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/campaign/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/campaign/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/contact/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/contact/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/contact/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversation/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversation/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversation/helpers.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversation/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversationAttributes/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversationAttributes/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/conversationAttributes/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/message/actions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/message/getters.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/modules/specs/message/mutations.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/store/types.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/views/ArticleViewer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/views/Campaigns.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/views/Home.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/views/Messages.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/views/PreChatForm.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]},{"filePath":"/Users/user/Dev/Produtos/Chatwoot/backup/chatwoot-develop/app/javascript/widget/views/UnreadMessages.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"lines-around-directive","replacedBy":["padding-line-between-statements"]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"global-require","replacedBy":[]},{"ruleId":"no-buffer-constructor","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-path-concat","replacedBy":[]},{"ruleId":"no-return-await","replacedBy":[]}]}]
|