function getItem()

in public/src/js/utils/draggable-element.js [39:80]


function getItem(dataTransfer, sourceGroup) {
    var id = dataTransfer.getData('Text'),
        mediaItem = getMediaItem(dataTransfer),
        sourceItem = dataTransfer.getData('sourceItem'),
        knownQueryParams = parseQueryParams(id, {
            namespace: 'gu-',
            excludeNamespace: false,
            stripNamespace: true
        }),
        unknownQueryParams = parseQueryParams(id, {
            namespace: 'gu-',
            excludeNamespace: true
        });

    if (!mediaItem && !id) {
        throw new Error('Sorry, you can\'t add that to a story package');
    }

    if (sourceItem) {
        sourceItem = JSON.parse(sourceItem);
        sourceItem.front = (sourceGroup || {}).front;

    } else if (unknownQueryParams.url) {
        sourceItem = { id: unknownQueryParams.url };
        sourceGroup = undefined;

    } else {
        sourceItem = {
            id: id.split('?')[0] + (_.isEmpty(unknownQueryParams) ? '' : '?' + _.map(unknownQueryParams, function(val, key) {
                return key + (val ? '=' + encodeURIComponent(val) : '');
            }).join('&')),
            meta: knownQueryParams
        };
        sourceGroup = undefined;
    }

    return {
        mediaItem: mediaItem,
        sourceItem: sourceItem,
        sourceGroup: sourceGroup
    };
}