Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 11x 11x 7x 7x 7x 7x 7x 18x 1x 1x 1x 1x 1x 1x 5x 5x 18x 2x 2x 2x 2x 2x 2x 3x 3x 3x 8x 1x 1x 1x 1x 1x 18x 18x 18x 18x 18x 18x 18x 18x | /*!
* WikiLambda Vue editor: Share URL composable
* Provides helpers to parse shareable function call URLs.
*
* @copyright
*/
'use strict';
const { inject, ref } = require( 'vue' );
const Constants = require( '../Constants.js' );
const { getZFunctionCallFunctionId } = require( '../utils/zobjectUtils.js' );
/**
* Share URL composable
*
* @return {Object}
*/
module.exports = function useShareUrl() {
const i18n = inject( 'i18n' );
const sharedFunctionCall = ref( null );
const shareUrlError = ref( null );
/**
* Loads a function call from the current window location.
*
* @param {string|null} expectedFunctionZid ZID to validate against
*/
function loadFunctionCallFromUrl( expectedFunctionZid = null ) {
if ( typeof window === 'undefined' ) {
return;
}
const searchParams = new URLSearchParams( window.location.search );
const callParam = searchParams.get( 'call' );
if ( !callParam ) {
return;
}
try {
const decodedJson = decodeURIComponent( callParam );
const zobject = JSON.parse( decodedJson );
if ( !zobject || zobject[ Constants.Z_OBJECT_TYPE ] !== Constants.Z_FUNCTION_CALL ) {
shareUrlError.value = i18n(
'wikilambda-function-evaluator-share-error-invalid-structure'
).text();
sharedFunctionCall.value = null;
return;
}
const functionZid = getZFunctionCallFunctionId( zobject );
if ( !functionZid || ( expectedFunctionZid && functionZid !== expectedFunctionZid ) ) {
shareUrlError.value = i18n(
'wikilambda-function-evaluator-share-error-invalid-structure'
).text();
sharedFunctionCall.value = null;
return;
}
sharedFunctionCall.value = zobject;
shareUrlError.value = null;
} catch ( error ) {
sharedFunctionCall.value = null;
shareUrlError.value = i18n(
'wikilambda-function-evaluator-share-error-invalid-json'
).text();
}
}
return {
sharedFunctionCall,
shareUrlError,
loadFunctionCallFromUrl
};
};
|