operator-checker
Version:
Iranian mobile operator detection package for Vue 3 and TypeScript
111 lines • 4.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useOperatorChecker = useOperatorChecker;
var vue_1 = require("vue");
var operator_checker_1 = require("./operator-checker");
function useOperatorChecker(options) {
if (options === void 0) { options = {}; }
var _a = options.autoValidate, autoValidate = _a === void 0 ? true : _a, _b = options.showDetails, showDetails = _b === void 0 ? false : _b;
// Reactive state
var phoneNumber = (0, vue_1.ref)('');
var operator = (0, vue_1.ref)(null);
var operatorInfo = (0, vue_1.ref)(null);
var operatorName = (0, vue_1.ref)(null);
var operatorNameFa = (0, vue_1.ref)(null);
var isValid = (0, vue_1.ref)(false);
var isLoading = (0, vue_1.ref)(false);
var error = (0, vue_1.ref)(null);
// Computed properties
var operatorCode = (0, vue_1.computed)(function () { return operator.value; });
var operatorDetails = (0, vue_1.computed)(function () { return ({
code: operator.value,
name: operatorName.value,
nameFa: operatorNameFa.value,
info: operatorInfo.value,
}); });
// Methods
var checkOperator = function (number) {
isLoading.value = true;
error.value = null;
try {
phoneNumber.value = number;
// Validate format if autoValidate is enabled
if (autoValidate && !(0, operator_checker_1.isValidIranianMobileNumber)(number)) {
isValid.value = false;
operator.value = null;
operatorInfo.value = null;
operatorName.value = null;
operatorNameFa.value = null;
error.value = 'شماره موبایل معتبر نیست';
return;
}
// Detect operator
var detectedOperator = (0, operator_checker_1.detectOperator)(number);
operator.value = detectedOperator;
if (detectedOperator !== null) {
isValid.value = true;
if (showDetails) {
operatorInfo.value = (0, operator_checker_1.getOperatorInfo)(number);
}
operatorName.value = (0, operator_checker_1.getOperatorName)(number);
operatorNameFa.value = (0, operator_checker_1.getOperatorNameFa)(number);
}
else {
isValid.value = false;
operatorInfo.value = null;
operatorName.value = null;
operatorNameFa.value = null;
error.value = 'اپراتور شناسایی نشد';
}
}
catch (err) {
error.value = 'خطا در پردازش شماره';
isValid.value = false;
}
finally {
isLoading.value = false;
}
};
var reset = function () {
phoneNumber.value = '';
operator.value = null;
operatorInfo.value = null;
operatorName.value = null;
operatorNameFa.value = null;
isValid.value = false;
isLoading.value = false;
error.value = null;
};
var validateNumber = function (number) {
return (0, operator_checker_1.isValidIranianMobileNumber)(number);
};
// Watch for changes in phoneNumber if provided
if (phoneNumber.value) {
(0, vue_1.watch)(phoneNumber, function (newValue) {
if (newValue) {
checkOperator(newValue);
}
});
}
return {
// State
phoneNumber: phoneNumber,
operator: operator,
operatorInfo: operatorInfo,
operatorName: operatorName,
operatorNameFa: operatorNameFa,
isValid: isValid,
isLoading: isLoading,
error: error,
// Computed
operatorCode: operatorCode,
operatorDetails: operatorDetails,
// Methods
checkOperator: checkOperator,
reset: reset,
validateNumber: validateNumber,
// Constants
Operator: operator_checker_1.Operator,
};
}
//# sourceMappingURL=useOperatorChecker.js.map